linux程序系列(8)wait函式

2021-08-03 14:54:11 字數 1016 閱讀 9219

wait函式

1、標頭檔案

#include

#include

2、函式原型

1) pid_t wait(int *status);

返回: 成功返回子程序id,出錯返回-1

功能: 在乙個子程序終止前,wait使其呼叫者阻塞

2) pid_t waitpid(pid_t pid, int *status, int options);

返回: 成功返回子程序id,出錯返回-1

功能: 在乙個子程序終止前,wait使其呼叫者阻塞,而waitpid有一選擇項,可使呼叫者不阻塞。

waitpid並不等待第乙個終止的子程序,它有若干個選擇項,可以控制它所等待的程序。

waitpid函式提供了wait函式沒有提供的三個功能:

* waitpid等待乙個特定的程序(而wait則返回任一終止子程序的狀態)。

* waitpid提供了乙個wait的非阻塞版本。有時希望取得乙個子程序的狀態,但不想阻塞。

* waitpid支援作業控制(以wuntraced選擇項)

status引數:

為空時,代表任意狀態結束的子程序,若不為空,則代表指定狀態結束的子程序。

options引數:

wnohang: 若由pid指定的子程序沒有退出則立即返回,則waitpid不阻塞,此時其返回值為0

wuntraced: 若某實現支援作業控制,則由pid指定的任一子程序狀態已暫停,且其狀態自暫停以來還未報告過,則返回其狀態。wifstoped巨集確定返回值是否對應於乙個暫停子程序

檢查wait和waitpid所返回的終止狀態的巨集

wifexited/wexitstatus(status): 

若為正常終止子程序返回的狀態,則為真。 

wifsignaled/wtermsig(status): 

若為異常終止子程序返回的狀態,則為真(接到乙個不捕捉的訊號)。

wifstoped/wstopsig(status):

若為當前暫停子程序的返回的狀態,則為真。

Linux系統wait 和waitpid 函式

include include pid t wait int status 程序一旦呼叫了wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如果讓它找到了這樣乙個已經變成殭屍的子程序,wait就會收集這個子程序的資訊,並把它徹底銷毀後返回 如果沒有找到這樣乙個子程序,wa...

linux程序學習,使用wait函式

include include include include include include int main else if pc 0 子程序 else 父程序 else 如果wifexited返回零 exit 0 注意 1.wait函式的使用時如果需要知道退出時候的返回值,呼叫wait函式的時...

Linux程序控制(三)wait

5.wait系列函式 include pid t wait int statloc pid t waitpid pid t pid,int statloc,int options 若成功,返回程序id 若出錯,返回0或 1 程序呼叫wait waitpid 若所有子程序還在執行,wait waitp...