パイプを想定して、
int pipe_fd[2];
pipe(pipe_fd);
フォークし、1つのプロセスが任意の時間にパイプに書き込むことを期待します。プロセスの1つでは、パイプの内容をブロックせずにチェックできるようにする必要があります。
つまり、通常の読み取りは、何も存在せず、書き込み終了が開いたままの場合にブロックされます。私は他のことをしたいのですが、一度に少しずつ読んで、いくつかのことをしてから、もう一度チェックして、もっとあるかどうかを確認したいと思います。
close(pipe_fd[1]);
while(1){
if(/**Check pipe contents**/){
int present_chars = 0;
while( read(pipe_fd[0],&buffer[present_chars],1) != 0)
++present_chars;
//do something
}
else
//do something else
}