LINUX裡,父程序退出了,子程序一定會退出嗎

2025-07-15 21:30:14 字數 2728 閱讀 9900

1樓:閃閃紅星張學良

不。若父程序退出,子程序尚未結束,則子程序會被init程序領養,也就是說init程序將成為該子程序的父程序。

若希望父程序退出,子程序也退出的話,可以使用執行緒,因為若程序結束,則還沒結束的執行緒一定會立刻結束。或者如樓上所說,用訊號,用atexit註冊乙個退出時執行的函式,這個函式中傳送訊號給子程序即可。

2樓:萬年長長青

linux 父程序關閉子程序。

3樓:網友

理論上可以用訊號。但是,沒辦法做到子程序退出同一時間父程序退出。必須父程序有呼叫檢測。

4樓:星呈幻

不會,父程序退出後,子程序成為孤兒程序被init程序收養。如果需要用父程序**子程序,就要在父程序裡使用waitpid,這個函式會讓父程序阻塞,直到子程序執行完成。

5樓:超級

子程序被父程序fork之後,父程序先比子程序死亡,子程序的ppid變成祖宗級別的id可能是0程序init程序,子程序被稱為「孤兒程序」父程序死亡,被領養。

子程序死亡,父程序**。父程序在未**接受,子程序又叫「殭屍程序」沒有人收屍。

還有我也疑惑的是是:隨著終端關閉,終端執行的程式都會死掉,而不是遷移id到init程序,難道是這是異常終止,而不是正常退出?避免這種情況,就是靠變為守護程序了。

6樓:網友

時間父程序退出。必須父程序有呼叫檢測。

在linux中父程序先於子程序退出會造成什麼結果

7樓:萬年長長青

linux 父程序關閉子程序。

linux c 如何實現子程序退出時父程序也退出?

8樓:網友

理論上可以用訊號。但是,沒辦法做到子程序退出同一時間父程序退出。必須父程序有呼叫檢測。

9樓:網友

讓父程序等子程序,或著抓訊號都可以。

linux下子程序fork自父程序,當父程序被殺了之後,子程序還存在嗎?

10樓:地中海太陽

一般殺死父程序也會殺子程序。

殺死父程序後,你看到子程序還活著的原因是因為孩子在選擇處理sigkill事件後才會死亡。它不必馬上處理。你的指令碼執行乙個sleep()命令,在睡眠完成之前,它不會被喚醒以處理任何事件。

為什麼是ppid#1?父程序已經死亡,不再在程序表中。並不會莫名其妙地連線到init。

兩者都是不正確的。該子程序仍然存在於程序表中並且正在執行,但是不會處理基於它的程序id的新事件,直到它處理完sigkill。這意味著孩子是乙個殭屍前,走路死亡,有被貼上標籤的危險。

殺死程序組是不同的,用來殺死兄弟姐妹,並且通過程序組#來殺死父程序。也許同樣重要的是要注意,「殺死乙個程序」本身並不是以人類的方式「殺戮」,在那裡你期望程序被摧毀,所有的記憶都會像以前一樣迴歸。它只是傳送乙個特定的事件,其中很多,它處理的過程。

如果這個過程沒有正確處理,那麼一段時間以後,作業系統會強行進行「清理」。

它(殺害)不會立即發生,因為孩子(甚至父母)可能已經寫了一些東西到磁碟上,等待i / o完成或者做一些可能危及系統穩定性或檔案完整性的其他關鍵任務。

11樓:良玉小帝

被殺掉屬於異常退出並沒有去結束子程序,所以子程序還在。

12樓:網友

存在。 子程序變成孤兒程序, init接收管理; 如果centos7是systemd接收管理;

13樓:大大蟲

在,父程序變成init,父程序號為1

14樓:網友

父程序死掉 子程序就沒有了。

能否做到,父程序退出的時候,子程序全都退出

15樓:嘻嘻嘻嘻

在網上檢視waitpid和wait函式的用法,linux中使用這兩個函式可以做到。

linux中 子程序異常退出怎麼重啟子程序

16樓:迪蒙智慧交通

父程序先於子程序退出造成子程序成為殭屍程序 比如這樣 #include #include #include int main(void) return 0; }

17樓:網友

用父程序來監查,當子程序異常退出時,會傳送sigchld訊號給父程序,父程序捕捉到訊號後可以呼叫execl函式來重啟這個程式。

在linux程式設計中,父程序為什麼要等待並**子程序的退出狀態?不這樣做會有什麼後果?

18樓:秋天秋天快來啊

分幾種情況:

父程序永不退出:這種情況下若子程序退出,而父程序沒有收集子程序的退出狀態,則此子程序會變為殭屍程序,一直佔用少量資源,有危害;

父程序比子程序先退出:這種情況下父程序退出時,仍在執行的子程序會變為孤兒程序,孤兒程序會被託管給init程序,孤兒程序結束時由init程序負責**;

父程序比子程序晚退出:子程序先退出時會變為殭屍程序,佔用少量資源;待到父程序再退出時,子程序由殭屍程序變為孤兒程序,init程序會**這些已僵死的孤兒程序,則這些已經僵死的孤兒程序就能瞑目而去了;

19樓:匿名使用者

如果父程序沒有**子程序,子程序會變成殭屍程序。

Linux可是怎麼檢視各個執行的程序佔用的埠

檢視埠使用情況,使用netstat命令。檢視已經連線的服務埠 establishednetstat a檢視所有的服務埠 listen,established netstat ap檢視8080埠,則可以結合grep命令 netstat ap grep 8080 如檢視8888埠,則在終端中輸入 lso...

在linux裡什麼意思,linux裡 是什麼意思啊

在linux裡是命令提示符的意思。對於linux系統來說,無論是 處理器 記憶體 磁碟驅動器 鍵盤 滑鼠,還是使用者等都是檔案,linux系統管理的命令是正常執行的核心,與之前的dos命令類似。linux命令在系統中有兩種型別 內建shell 外殼 命令和linux命令。擴充套件資料可以在 後面輸入...

程序裡有N個rundll32程序

rundll32手工查殺方法 1 在windows目錄中查詢run32.exe檔案,如果發現則證明病毒存在,則將同目錄下的rundll32.exe檔案刪除,將run32.exe檔案改名為 rundll32.exe。2 在windows目錄中查詢regedit.exe.sys檔案,如果找到則證明病毒存...