Linux程序等待

2021-10-25 01:36:56 字數 914 閱讀 6724

程序等待:

父程序等待子程序退出,獲取子程序的退出返回值,釋放退出的子程序資源,避免子程序成為殭屍程序。

殭屍程序:子程序先於父程序退出,但是父程序沒有關注子程序的退出狀態,子程序為了儲存自己的退出狀態,因此資源無法完全釋放。

如何等待:

*int wait(int status);

是乙個阻塞介面,處理退出的子程序,若沒有子程序退出,則會一直等待,直到有子程序退出才會呼叫返回;

阻塞:為了完成乙個功能,發起乙個呼叫,若不具備完成功能的條件,則呼叫一直等待;

非阻塞:為了完成乙個功能,發起乙個呼叫,若不具備完成功能的條件,則呼叫立即報錯返回。

返回值:成功則返回處理的退出子程序的pid;失敗則返回-1(比如沒有子程序)

*int waitpid(int pid,int staus;int option);

也是處理退出的子程序;但是與wait不同之處:

1.wait等待的是任意乙個子程序的退出;waitpid可以等待指定的子程序,也可以等待任意乙個子程序,通過第乙個引數確定(第乙個引數pid==-1則表示等待任意)

2.wait是乙個阻塞介面(wait如果沒有子程序退出,則會一直等待);waitpid可以預設阻塞,也可以設定為非阻塞,通過第三個引數確定(第三個引數option == 0表示預設阻塞;option==wnohang則表示非阻塞)

返回值:成功返回退出的子程序的pid大於0;若沒有子程序退出返回0;若出錯返回-1;

乙個程序退出場景有兩種:正常退出與異常退出

乙個程序只有在正常退出的時候,返回值才是有意義的;若程序是異常退出,則返回值沒有意義;

core dump–核心轉儲

當乙個程序異常退出時,將退出前的程式執行資訊儲存下來(預設是關閉的)

預設是關閉的:程式中有很多敏感資料,有隱私洩露風險,儲存執行資料需要占用磁碟空間。

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...