将数据发送到子进程

时间:2016-11-12 22:02:20

标签: c pipe fork

如果父进程有两个子进程,并且每个子进程都有自己的管道,那么父进程如何写入每个子进程的管道?有没有办法调用一个过程可以指定特定孩子的id?

的函数

1 个答案:

答案 0 :(得分:0)

在分叉之前,创建一个管道(fd对)。

fork

pid_to_pipe,然后让父进程关闭读取结束并将管道的写入端保存到if(0>(pid = fork())) /*handle err.*/; if(pid){ //parent if(0>save_pid_to_pipe(pid, pipe_fds[1])) /*handle err.*/; close(pipe_fds[0]); } 表中:

close(pipe_fds[0]);

孩子需要关闭最新管道的写入端:

pipe_fds[0];

所有写入在父查询表中结束。 然后它可以等待{{1}}上的指令(读取结束时创建子节点时的最新读取结束),而父节点可以通过查找表通过pid选择相应的写入结束。

您可以为查找表使用简单数组,排序数组,映射或散列。