【问题标题】:Multiple fork()'s. How does main know pid?多个 fork()。 main怎么知道pid?
【发布时间】:2012-06-02 15:52:44
【问题描述】:

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

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

当无法知道哪个孩子在管道上写的时候,有什么方法可以知道孩子在父母中的PID?

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

谢谢!

【问题讨论】:

  • 为什么你不知道它来自哪里?
  • 因为我无法知道是哪个孩子写了管道。

标签: c process fork pipe


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2016-08-07
        • 2015-05-14
        • 2012-09-06
        • 2015-10-20
        • 2017-02-14
        • 1970-01-01
        • 1970-01-01
        • 2011-06-27
        • 2015-12-31
        相关资源
        最近更新 更多