阻塞等待:為了完成乙個功能發起呼叫,當前若不具備完成條件,等待直到條件具備完成功能後返回
非阻塞等待:為了完成乙個功能發起呼叫,當前若不具備完成條件,則立即報錯返回
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 返回值 當正常返回的時...