Linux程序7 程序等待

2021-10-25 08:43:59 字數 1000 閱讀 1599

殭屍程序就是已經結束了的,但是還沒有從程序表中刪除的程序。殭屍程序太多會導致程序表裡面條目被填滿,進而導致系統崩潰。

在程序的狀態中,殭屍程序幾乎放棄了所有的記憶體空間,沒有任何可執行**,也不能被排程,僅僅在程序列表中保留乙個位置。

他需要父程序來為它收屍,如果父程序沒有安裝sigchld訊號處理函式,呼叫wait()或者waitpid()等待子程序結束,又沒有顯式忽略該訊號,那麼它就一直保持殭屍狀態。如果這時父程序結束了,那麼init程序會自動接手這個子程序,為它收屍。

ps - ef | grep 殭屍程序的pid

kill -9 殭屍程序的父程序

wait()會暫時停止目前程序的執行,直到有訊號來到或子程序結束為止。

waitpid()會暫時停止目前程序的執行,直到有訊號來到或子程序結束為止。

在linux中程序退出分為正常退出和異常退出;

不管哪種退出方式,系統最終都會執行核心中的同一**,這段**用來關閉程序所用已開啟的檔案描述符,釋放它所佔的記憶體和其它資源。

exit是乙個函式,有引數,exit執行完後把控制權交給系統;

return是函式執行完後的返回,return執行完後將控制權交給系統。

exit是正常終止程序;

abort是異常終止程式。

exit和_exit函式都是用來終止程序的,當程式執行到exit和_exit時,系統無條件地停下所有的操作,清除包括pcb在內的各種資料結構,並終止本程序的執行。

exit在標頭檔案stdlib.h中宣告,而_exit在標頭檔案unistd.h中宣告。

LINUX 程序等待

wait 函式一般用在父程序中等待 子程序的資源,而防止殭屍程序的產生。什麼是殭屍程序?pid t wait int status 引數 status 是乙個整形指標。如果status不是乙個空指標,則終止程序的終止狀態將儲存在該指標所指向的記憶體單元中。如果不關心終止狀態,可以將 status引數...

Linux 程序等待

目錄 程序等待 程序等待的必要性 程序等待的方法 wait waitpid 引數int status 誰要等待?等待什麼?為什麼要等待 首先要知道程序終止或退出的時候會發生什麼,程序退出時會關閉所有檔案描述符,釋放在使用者空間分配的記憶體,但是pcb卻會暫時保留,裡面存著退出狀態,比如乙個程序正常退...

Linux 程序等待

阻塞等待 為了完成乙個功能發起呼叫,當前若不具備完成條件,等待直到條件具備完成功能後返回 非阻塞等待 為了完成乙個功能發起呼叫,當前若不具備完成條件,則立即報錯返回 wait方法 功能 阻塞等待 任意乙個子程序退出,獲取返回值 include include pid t wait int statu...