QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1191|回复: 3

高手指点! 利用管道在父子进程间传递数据

[复制链接]
发表于 2003-1-14 23:16:14 | 显示全部楼层 |阅读模式
//代码段:
if (pipe(fd) < 0)


                exit(0);


        if ( (pid = fork()) < 0)


                exit(0);


        else if (pid > 0) {                /* parent */


                close(fd[0]);


                write(fd[1], "I am from parent!\n", 19);


        }


else {                                /* child */


                close(fd[1]);


                n = read(fd[0], line, 1024);


                write(STDOUT_FILENO, line, n);


        }


        exit(0);
//代码段结束
问题:
1.pid = fork() 的返回值可能有哪些?是一定值吗?
2.如果是一定值,那么怎么会既执行if ( (pid = fork()) < 0).....
   又执行else if (pid > 0).....?

多谢!!!
发表于 2003-1-15 00:03:50 | 显示全部楼层
man fork
或者看看unix环境高级编程
回复

使用道具 举报

发表于 2003-1-16 13:38:54 | 显示全部楼层
我看过qt的管道通讯方式qprocess,是用很方便,你可以试试!
回复

使用道具 举报

发表于 2003-1-16 14:00:47 | 显示全部楼层
其实你这段程序,写得很清楚了,
(pid=fork()) >0 在父进程中,向管道里写东西
(pid=fork()) ==0 在子进程中,从管道里读东西
(pid=fork()) < 0 看errno;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 14:37 , Processed in 0.082570 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表