2025
01
18
2012
05
27
パイプで双方向プロセス間通信(C言語)
ファイル整理してたら出てきたのでメモ
ソースコード
/* pipe.c */ #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> #define BUF_LEN 256 int main(void) { int fd[2], ret; char buf[BUF_LEN]; pid_t pid; if ((ret = pipe(fd)) == -1) { perror("pipe"); return -1; } if ((ret = fork()) == -1) { perror("fork"); return -1; } else if (ret == 0) { pid = getpid(); printf("[pid:%d] I'm child\n", (int)pid); write(fd[1], "child wrote", 13); read(fd[0], buf, BUF_LEN); printf("[pid:%d] from parent:[%s]\n", (int)pid, buf); } else { pid = getpid(); printf("[pid:%d] I'm parent\n", (int)pid); write(fd[1], "parent wrote", 14); read(fd[0], buf, BUF_LEN); printf("[pid:%d] from child:[%s]\n", (int)pid, buf); wait(&ret); } return 0; }
実行結果
./pipe [pid:13330] I'm parent [pid:13330] from child:[parent wrote] [pid:13331] I'm child [pid:13331] from parent:[child wrote]
検索用タグ C言語 プロセス間通信
PR
2012/05/27 (Sun.) Comment(0) C言語
Comments