多个fork()的。主要知道pid怎么样?

时间:2012-06-02 15:52:45

标签: c process fork pipe

我正在编写一个创建#childs的C程序,让他们执行单个任务并将结果报告给main。写入管道后,他们必须等待另一个请求。

我在一个方向上与管道进行通信,但我无法知道数据来自何处(或更好,来自谁)。

当无法知道哪个孩子在管道上写字时,有没有办法知道父母的孩子的PID?

修改 我有一个包含所有孩子的PID的数组,但在读出管道时,我无法知道数据的来源。

谢谢!

3 个答案:

答案 0 :(得分:4)

为每个孩子创建一个管道,并使用selectpoll一次收听所有这些管道。

答案 1 :(得分:3)

要么像Zack所说(每个孩子一个管道),要么改变你的协议,以便孩子报告其pid作为信息的一部分。

答案 2 :(得分:0)

fork()将子进程的pid返回给父进程,将0返回给子进程,可以将它们存储在数组或链接列表中以跟踪它们