Docker和孤兒程序 殭屍程序

2021-08-08 13:02:17 字數 614 閱讀 9223

前言

在unix/linux系統中,正常情況下,子程序是通過父程序fork建立的。子程序的結束和父程序的執行是乙個

非同步過程

,即父程序永遠無法**子程序到底什麼時候結束。 當乙個程序完成它的工作終止之後,它的父程序需要

呼叫wait()或者waitpid()系統呼叫取得子程序的終止狀態。

在docker容器中執行的程序,一般是沒有init程序的

。可以進入容器使用 ps 檢視,會發現

pid 為 1 的程序並不是 init,而是容器的主程序。

如果容器中產生了孤兒程序,誰來接管這個程序?

找到相同執行緒組裡其它可用執行緒

沿著它的程序樹向祖先程序找乙個最近的

child_subreaper

並且執行著的程序

該namespace下程序號為1的程序

docker 1.11之後

docker 1.11之前

殭屍程序和孤兒程序

殭屍程序 乙個子程序在其父程序還沒有呼叫wait 或waitpid 的情況下退出。這個子程序就是殭屍程序。孤兒程序 乙個父程序退出,而它的乙個或多個子程序還在執行,那麼那些子程序將成為孤兒程序。孤兒程序將被init程序 程序號為1 所收養,並由init程序對它們完成狀態收集工作。殭屍程序將會導致資源...

殭屍程序和孤兒程序

什麼是殭屍程序?乙個子程序在其父程序沒有呼叫wait 或waitpid 的情況下退出。這個子程序就是殭屍程序。如果其父程序還存在而一直不呼叫wait,則該殭屍程序將無法 等到父程序結束後,會被init 驗證 include include includeint main 3秒後查詢其程序資訊 通過上...

殭屍程序和孤兒程序

殭屍程序和孤兒程序 在unix系統程式設計中,常常會碰到兩個概念 僵死程序和孤兒程序 僵死程序 在unix程序模型中,程序是按照父程序產生子程序,子程序產生子子程序這樣的方式建立出完成各項相互協作功能的程序的。當乙個程序完成它的工作終止之後,它的父程序需要呼叫wait 或者waitpid 系統呼叫取...