簡體   English   中英

父進程和子進程,如果退出,如何通知其他出口?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM