2011-07-07 96 views

回答

0

我是通過使用信號量和信號處理程序完成的。要喚醒孩子,父進程會向子進程發送一個信號,然後再從信號處理程序中發佈信號。那個等待那個信號量的孩子,然後醒了過來。

-1

您可以發送您的流程SIGSTOP,然後通過SIGCONT繼續。

+0

在執行過程中發送SIGSTOP是否安全?他們不是一種從一開始就暫停的方式嗎? Ptrace是我想到的一件事。 – MetallicPriest

+0

您剛剛推薦了一種易受競爭條件影響的解決方案。 –

+0

您可以隨時使用raise來發送信號:http://pubs.opengroup.org/onlinepubs/009695399/functions/raise.html –

4

爲什麼不在分叉後的子進程代碼中調用pause()

+0

要麼是這樣,要麼是對sigsuspend(2)的調用,然後是kill(pid, SIGXXX),其中SIGXXX是選擇的信號。 SIGCONT也許? –

+0

@Jorgen,sigsuspend不會做你認爲的事情。 –

+0

@邁克爾:它確實是文檔所說的。 –