Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在编写一个创建 #childs 的 C 程序,让他们执行一项任务并将结果报告回主程序。写入管道后,他们必须等待另一个请求。
我在一个方向上使用管道进行通信,但我无法知道数据来自哪里(或者更好的是,来自谁)。
当无法知道哪个孩子在管道上写的时候,有没有办法知道孩子在父母中的PID?
编辑 我有一个包含所有 PID 的数组,但是在读取管道时,我无法知道数据来自哪里。
谢谢!
为每个孩子创建一个管道,然后一次使用select或poll收听所有孩子。
select
poll
要么像 Zack 所说的那样(每个孩子一个管道),要么改变你的协议,让孩子将其 pid 作为消息的一部分报告。
fork() 将子进程的pid返回给父进程,将0返回给子进程,您可以将它们存储在数组或链接列表中以跟踪它们