[英]parent process and child processes, if one exits, how to inform the other exits?
如果我在我的Linux C程序中生成一個進程,總共有兩個進程,一個父進程和一個子進程。 我想:如果這兩個進程中的一個退出,另一個進程也會退出。
怎么做到這一點? 有沒有類似的源代碼?
注意:我不想阻止這兩個進程,例如,我不希望wait()阻止父進程
謝謝!
在父進程中,您可以使用waitpid
系統調用。 它將阻止直到孩子退出。
在子進程中,您不能使用waitpid
。 一種選擇是父親會在退出時通過發送SIGTERM
來通知孩子。 但這只有在父親不會被SIGKILL
殺死的情況下才有效。 我建議周期性地使用kill
with param 0
向父進程發送信號。 如果失敗,則該過程已終止。
來自kill(2)手冊頁 :
如果sig為0,則不發送信號,但仍然執行錯誤檢查; 這可用於檢查是否存在進程ID或進程組ID。
如果孩子退出,父母將被發送SIGCHLD
。 如果父母要死,它應該以某種方式通知孩子,或者至少發送一個SIGTERM
。
http://linux.die.net/man/2/waitpid
等待任何子進程,然后從waitpid返回時退出。
如果父進程退出,則子進程將變為僵屍進程。
如果子進程退出,則可以通過等待系統調用通知父進程。 您可以通過讀取父級的狀態退出父級。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.