在我的程序(main.c)中,我分叉了一个进程,然后我需要通过管道将数据发送到子进程。在execl 系统调用之后,子进程在 process.c 文件中继续其生命。通过将该子进程的标准输入设置为其父进程的文件描述符,我尝试将数据从父进程发送到子进程。但是子进程无法获得任何输入,我无法理解为什么会出现这个问题。提前谢谢了。
主程序
#define PIPE(fd) socketpair(AF_UNIX, SOCK_STREAM, PF_UNIX, fd)
...
char* data="data";
int fd[2];
PIPE(fd);
write(fd[0],data,sizeof(data));
if(fork()==0){
dup2(fd[0],0);
close(fd[0]);
close(fd[1]);
execl("process","process",x,y,0);}
进程.c
...
char* data;
read(0,data,10);
printf("%s\n",data);