子プロセスからpipe経由でデータが欲しかった
- https://linuxjm.osdn.jp/html/LDP_man-pages/man2/pipe.2.html
- https://linuxjm.osdn.jp/html/LDP_man-pages/man2/fork.2.html
大量に同一pipeへデータを一括で書き込もうかと思ったのでとりあえず子プロセスから頑張ってみた。
#include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/wait.h> #define BUFSIZE 10 int main(int argc, char *argv[]) { pid_t childPid; int pipefd[2]; if (pipe(pipefd) == -1) { perror("pipe"); exit(EXIT_FAILURE); } int i; for(i = 0; i< 3; i++) { switch(childPid = fork()) { case -1: exit(EXIT_FAILURE); case 0: printf("child pid: %d\n",getpid()); close(pipefd[0]); char buf[BUFSIZE]; for (int i=0; i < BUFSIZE; i++) buf[i] = i; write(pipefd[1], buf, BUFSIZE); close(pipefd[1]); _exit(0); default: break; } } while( (childPid = wait(NULL)) != -1) { printf("parent pid: %d\n",getpid()); close(pipefd[1]); char buf; while(read(pipefd[0], &buf, sizeof buf ) > 0) printf("%d\n",buf); continue; } return 0; }