pipe 后用fork生成一个子进程, 子进程如何向父进程传递它的值
来源: 互联网 发布时间:2016-10-04
本文导语: 本帖最后由 purplepare 于 2010-10-06 20:16:32 编辑 我在程序中,pipe了一个管道,之后fork了一个子进程,在子进程中用execl(...)执行了另外的一个程序,从父进程向子进程通信的程序,我已经实现了,但现在的问题...
给已有的例子参考也行....
谢谢...
|
可以考虑使用输入/输出重定向
把被执行程序的标准输出重定向到管道,子进程中直接printf()就可以了
把被执行程序的标准输出重定向到管道,子进程中直接printf()就可以了
#include
#include
#include
#include
main()
{
int fd[2];
char buff[128] = {0};
pipe(fd);
if( fork() == 0 )
{
dup2(fd[0], 0);
dup2(fd[1], 1);
execlp("./testexe", "./testexe", 0);
}
else
{
read(fd[0], buff, sizeof(buff));
printf("%sn", buff);
}
}
|
int fd1[2], fd2[2];
...
pid = fork();
if (pid > 0)
{
close(fd1[0]);
close(fd2[1]);
...
}
else
{
close(fd1[1]);
close(fd2[0]);
...
}
...
pid = fork();
if (pid > 0)
{
close(fd1[0]);
close(fd2[1]);
...
}
else
{
close(fd1[1]);
close(fd2[0]);
...
}
|
进程间通信即可
|
那就用FIFO阿,不过你还是要能修改exec中程序的源码才可以。
|
很简单啊 建立一个pipe 子进程往里面写东西,父进程读出来就可以了 这个我实现过 就这么做