如果父进程有两个子进程,并且每个子进程都有自己的管道,那么父进程如何写入每个子进程的管道?有没有办法调用一个过程可以指定特定孩子的id?
的函数答案 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选择相应的写入结束。
您可以为查找表使用简单数组,排序数组,映射或散列。