我正在寫一個C程序,創建#個孩子,讓他們完成一項任務並將結果報告給主要人員。在寫入管道後,他們必須等待另一個請求。多叉()的。主要如何知道pid?
我在一個方向上使用管道進行通信,但我無法知道數據來自哪裏(或更好地來自誰)。
當沒有辦法知道孩子在管道上書寫的孩子的PID時,有什麼辦法可以知道孩子的PID嗎?
編輯 我有孩子的所有PID的一個數組,但讀出管道時,我不知道哪裏的數據來自的方式。
謝謝!
我正在寫一個C程序,創建#個孩子,讓他們完成一項任務並將結果報告給主要人員。在寫入管道後,他們必須等待另一個請求。多叉()的。主要如何知道pid?
我在一個方向上使用管道進行通信,但我無法知道數據來自哪裏(或更好地來自誰)。
當沒有辦法知道孩子在管道上書寫的孩子的PID時,有什麼辦法可以知道孩子的PID嗎?
編輯 我有孩子的所有PID的一個數組,但讀出管道時,我不知道哪裏的數據來自的方式。
謝謝!
爲每個孩子創建一個管道,並使用select
或poll
一次收聽所有這些管道。
fork()的返回兒童的父進程的PID和0的孩子,你可以將它們存儲在一個陣列或者鏈接列表,以保持對它們的跟蹤
要麼是像扎克說(一個管每個孩子)或改變你的協議,以便孩子報告其pid作爲消息的一部分。
爲什麼你不知道它來自哪裏? –
因爲我沒有辦法知道哪個孩子寫給管道。 – Delusion