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