|
);
close(pipe_fd.);
}
}
则输出结果为: Broken pipe,原因就是该管道以及它的所有fork()产物的读端都已经被关闭。如果在父进程中保留读端,即在写完pipe后,再关闭父进程的读端,也会正常写入pipe,读者可自己验证一下该结论。因此,在向管道写入数据时,至少应该存在某一个进程,其中管道读端没有被关闭,否则就会出现上述错误(管道断裂,进程收到了SIGPIPE信号,默认动作是进程终止)对管道的写规则的验证2:linux不保证写管道的原子性验证
#include
#include
#include
main(int argc,char**argv)
{
int pipe_fd.;
pid_t pid;
char r_buf[409页码:[1] [2] [3] [4] [5] [6] [7] 第3页、共7页 |