读书人

父过程退出子进程open

发布时间: 2013-01-09 09:38:15 作者: rapoo

父进程退出,子进程open
我最近在学习进程间的FIFO通信,下面的代码中111111111已经打印了,但是222222222和333333333都没有打印,很奇怪,望各位大神指点。
int main()
{
pid_t pid;
char *path = "./file.fifo";

if((pid = fork()) == 0) { // clild
int fdfifo, fd;
int nread;
char buf[BUF_LEN] = { 0 };

mkfifo(path, 0777);

printf("111111111\n");

if((fdfifo = open(path, O_WRONLY))) == -1) {
printf("22222222\n");
}
printf("333333333333\n");

if((fd = open("./fifo.c", O_RDONLY)) == -1)
err_exit(1, "open ./fifo.c");

while((nread = read(fd, buf, BUF_LEN - 1)) > 0) {
printf("%s", buf);
memset(buf, 0, BUF_LEN);
}
} else if(pid > 0) { // parent
exit(0);
}
}

[解决办法]
打开FIFO只写阻塞了,要等到只读打开FIFO时才返回

读书人网 >C语言

热点推荐