スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

pipe()で、親プロセスと子プロセスのプロセス間通信をやってみる


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <sys/uio.h>


int main(void){

int pipefd[2];
char c;
int pid;


/* create a pipe */
if(pipe( pipefd ) == -1)
perror("pipe");
/* fork process */
pid = fork();
if( pid < 0 ){
perror("fork");
return 0;
}else if(pid == 0){/* child process */

/* child don't use pipefd[1](for write) */
close(pipefd[1]);
while(read(pipefd[0],&c,1)>0){
/* read from pipe, write to stdout */
write(1, &c, 1);

}
write(1, "\n", 1);
close(pipefd[0]);
exit(EXIT_SUCCESS);

}else{ /* parent process */
close(pipefd[0]);

/* read from stdin */
while(read(0,&c,1)>0){

/* write to pipefd[1] */
write(pipefd[1],&c, 1);

}
/* wait the end of child process */
close(pipefd[1]);
wait(NULL);
return EXIT_SUCCESS;
}

}


プロセス毎の処理は、関数分割した方が良いかも。
スポンサーサイト
プロフィール

tjnet777

Author:tjnet777
Solaris, VPNのサポート業務を1年

金融系SIerで業務アプリの開発、メンテを3年半

離職して大学院大学 1年生

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。