0

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

我在一个方向上使用管道进行通信,但我无法知道数据来自哪里(或者更好的是,来自谁)。

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

编辑 我有一个包含所有 PID 的数组,但是在读取管道时,我无法知道数据来自哪里。

谢谢!

4

3 回答 3

4

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

于 2012-06-02T15:55:59.157 回答
3

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

于 2012-06-02T16:25:15.890 回答
0

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

于 2012-06-02T15:56:05.343 回答