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
は常に100
の0
代わりの値であることがexecl()
を使用して、子プロセスから受け取りました。私は問題は彼らがパイプを共有していないと思いますか?
これは実際にはC++ではなくCです(C++コンパイラでコンパイルできるかもしれませんが、ここに示すコードはすべてCのAPIを使用しており、C言語で書かれています) – UnholySheep
http://stackoverflow.com/質問/ 11461106/socketpair-in-c-unix – UKMonkey