0
#include <stdio.h>
#include <unistd.h>
int fd[2];
int check = pipe(fd);
int main()
{
pid_t pid;
int read_int=0;
pid=fork();
if(pid==0)
{
execl("./getvalue.out","getvalue.out",(char *)0);
}
else
{
close(fd[1]);
read(fd[0],&read_int,sizeof(read_int));
printf("Receive: %d\n",read_int);
close(fd[0]);
}
wait(0);
}
这是getvalue.cpp:(用于创建getvalue.out)如何从子进程写入父进程的值?
#include <stdio.h>
#include <unistd.h>
int main(void)
{
int fd[2];
int write_int=100;
close(fd[0]);
write(fd[1],&write_int,sizeof(write_int));
close(fd[1]);
}
所以read_int
总是0
,而不是使用execl()
子过程中收到的100
值。我想问题是他们没有共享管道?
这实际上是C,而不是C++(即使它可能可以通过C++编译器编译,但此处显示的所有代码都使用C API并以C风格编写) – UnholySheep
http://stackoverflow.com/的副本问题/ 11461106/socketpair式-C-UNIX – UKMonkey