2016-02-11 64 views
-1

我正在創建一個程序,它創建n個與主進程通信的deamon。當他們得到sigusr1信號時,Deamons通過fifo發送單個味精。當主進程得到sigusr1時,它關閉隨機fifo。當隨機fifo關閉時,我希望通過該fifo進行通信的deamon死亡。它似乎不起作用...雖然文件描述符已關閉,但deamon仍然活着,並且在發送sigusr1時仍然不會死亡。 (每個守門員必須在同一組中)。如果另一端的文件描述符關閉,則終止進程

是否有可能將fifos的2個末端連接到2個進程並同步它?

+0

通常,'execl'後面的行更像'exit(EXIT_FAILURE)',因爲如果'execl'失敗,您只能到達那裏。 –

+0

它會影響我的問題嗎?因爲一切似乎都起作用 – Thomas

+0

不,這不太可能是相關的,但它很奇怪。 –

回答

0

我不知道,但在守護進程的代碼中,你不應該放置退出函數來退出守護進程的子進程,並且父進程可以退出狀態?

+0

這是一條評論而不是答案。 – kaylum

2

關閉fifo的一端並不表示信號的另一端。寫入到另一端將阻塞,直到有讀者。我認爲插座的語義在這裏會更好。另一種選擇是使用一對fifos,每個方向一個。第二個fifo提供一個ACK或一個明確的QUIT消息。

+0

需要用fifo或pipe來完成 – Thomas

+0

編輯答案建議雙向通信 – dancancode

+0

是不是有重複文件描述符的方法? – Thomas

相關問題