#include #include #include #include #include #include int main(){ int pid; int pfd[2]; int i; pipe(pfd); pid = fork(); if(pid==0){ /*CHILD*/ for(i = 0; i < 5; i++){ write(pfd[1], "Hallo", 5); sleep(3); } exit(0); } /*PARENT*/ close(pfd[1]); while(1){ fd_set rd; /*Liste der zu beobachtenden FDs*/ char buf[6]; int res, r; FD_ZERO(&rd); /*Liste leeren*/ FD_SET(pfd[0], &rd); /*pfd[0] in die Liste aufnehmen*/ r = select(pfd[0] + 1, &rd, NULL, NULL, NULL); if(r<=0) perror("select"); res = read(pfd[0], buf, 5); if(res == 0) break; /*res == 0 => EOF*/ buf[res] = '\0'; printf("%s\n", buf); } return 0; }