如何从子进程写入父进程的值?

时间:2016-10-14 16:13:12

标签: c linux pipe

#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()值。我想问题是他们没有共享管道?

1 个答案:

答案 0 :(得分:0)

你的getvalue代码的fd []不再指向管道了。将父级中的fd [1]值作为命令行参数传递给子进程。