Linux 程序等待

2021-10-02 14:13:24 字數 1223 閱讀 3545

阻塞等待:為了完成乙個功能發起呼叫,當前若不具備完成條件,等待直到條件具備完成功能後返回

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

wait方法

功能:阻塞等待

任意乙個子程序退出,獲取返回值

#include

#include

pid_t wait

(int

*status)

;返回值:

成功返回被等待程序pid,失敗返回-

1。引數:

輸出型引數,獲取子程序退出狀態,不關心則可以設定成為null

waitpid方法

功能:阻塞/非阻塞等待任意乙個子程序或指定的子程序退出。

注:option引數如果選擇wnohang將設定為非阻塞等待,如果為0預設阻塞等待

pid_ t waitpid

(pid_t pid,

int*status,

int options)

;

pid:

pid=-1,等待任乙個子程序。與wait等效。

pid>0.等待其程序id與pid相等的子程序。

status:

wifexited(status)::若為正常終止子程序返回的狀態,則為真。(檢視程序是否是正常退出)

wexitstatus(status): 若wifexited非零,提取子程序退出碼。(檢視程序的退出碼)

options:

wnohang: 若pid指定的子程序沒有結束,則waitpid()函式返回0,不予以等待。若正常結束,則返回該子程序的id。

#include

#include

#include

#include

intmain()

else

if( pid ==0)

else

sleep(1

);}while

(ret ==0)

;if(wifexited

(status)

&& ret == pid )

else

}return0;

}

獲取子程序status

LINUX 程序等待

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

Linux 程序等待

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

Linux 程序等待

include include pid t wait int status 返回值 成功返回等待程序pid,失敗返回 1.引數 輸出型引數,獲取最近稱退出狀態,不關心則可以設定為nullpid t waitpid pid t pid,int status,int optons 返回值 當正常返回的時...