首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

父过程退出,子进程open

2013-01-09 
父进程退出,子进程open我最近在学习进程间的FIFO通信,下面的代码中111111111已经打印了,但是222222222和33

父进程退出,子进程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时才返回

热点排行