【发布时间】:2017-02-24 03:40:37
【问题描述】:
#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 风格编写)