2016-10-14 15 views
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は常に1000代わりの値であることがexecl()を使用して、子プロセスから受け取りました。私は問題は彼らがパイプを共有していないと思いますか?

+0

これは実際にはC++ではなくCです(C++コンパイラでコンパイルできるかもしれませんが、ここに示すコードはすべてCのAPIを使用しており、C言語で書かれています) – UnholySheep

+0

http://stackoverflow.com/質問/ 11461106/socketpair-in-c-unix – UKMonkey

答えて

0

getvalueコードのfd []はパイプをもう指しません。親のfd [1]の値を子プロセスのコマンドラインパラメータとして渡します。

関連する問題