#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
,而不是使用100
从子进程收到的execl()
值。我想问题是他们没有共享管道?
答案 0 :(得分:0)
你的getvalue代码的fd []不再指向管道了。将父级中的fd [1]值作为命令行参数传递给子进程。