linux wait函式解析

2021-05-22 06:05:29 字數 2196 閱讀 9511

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

wait(等待子程序中斷或結束)

相關函式 waitpid,fork

表頭檔案

#include

#include

定義函式 pid_t wait (int * status);

函式說明

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

束。如果在呼叫wait()時子程序已經結束,則wait()會立即返

回子程序結束狀態值。子程序的結束狀態值會由引數status 返回,

而子程序的程序識別碼也會一快返回。如果不在意結束狀態值,則

引數status 可以設成null。子程序的結束狀態值請參考waitpid()。

返回值如果執行成功則返回子程序識別碼(pid),如果有錯誤發生則返回

-1。失敗原因存於errno 中。

附加說明

範例 一

#include

#include

#include

#include

int main()

else}執行

this is the child process.pid=1501

this is the parent process .wait for child...

child』s pid =1501,exit status =5

範例 二

#include

#include

#include

using namespace std;

int main(void)

{pid_t pid;

pid =fork();

if (pid<0)

exit(0);

else if (pid == 0)

{//如果是子程序 睡眠20秒

cout<<"children : "<

#include

定義函式 pid_t waitpid(pid_t pid,int * status,int options);

函式說明

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

結束。如果在呼叫waitpid()時子程序已經結束,則waitpid()會立即

返回子程序結束狀態值。子程序的結束狀態值會由引數status 返回,

而子程序的程序識別碼也會一快返回。如果不在意結束狀態值,則

引數status 可以設成null。引數pid 為欲等待的子程序識別碼,

其他數值意義如下:

pid<-1 等待程序組識別碼為pid 絕對值的任何子程序。

pid=-1 等待任何子程序,相當於wait()。

pid=0 等待程序組識別碼與目前程序相同的任何子程序。

pid>0 等待任何子程序識別碼為pid 的子程序。

引數option 可以為0 或下面的or 組合:

wnohang 如果沒有任何已經結束的子程序則馬上返回,不予以

等待。wuntraced 如果子程序進入暫停執**況則馬上返回,但結束

狀態不予以理會。

子程序的結束狀態返回後存於status,底下有幾個巨集可判別結束情

況:wifexited(status)如果子程序正常結束則為非0 值。

wexitstatus(status)取得子程序exit()返回的結束**,一

般會先用wifexited 來判斷是否正常結束才能使用此巨集。

wifsignaled(status)如果子程序是因為訊號而結束則此巨集值為

真wtermsig(status) 取得子程序因訊號而中止的訊號**,一般

會先用wifsignaled 來判斷後才使用此巨集。

wifstopped(status) 如果子程序處於暫停執**況則此巨集值為

真。一般只有使用wuntraced 時才會有此情況。

wstopsig(status) 取得引發子程序暫停的訊號**,一般會先

用wifstopped 來判斷後才使用此巨集。

返回值如果執行成功則返回子程序識別碼(pid),如果有錯誤發生則返回

-1。失敗原因存於errno 中。

範例參考wait()。

Linux wait函式解析2

程序一旦呼叫了 wait,就 立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出 如果讓它找到了這樣乙個已經變成殭屍的子程序,wait 就會收集這個子程序的資訊,並把它徹底銷毀後返回 如果沒有找到這樣乙個子程序,wait就會一直阻塞在這裡,直到有乙個出現為止。wait 等待子程序中斷或...

linux wait函式用法

程序一旦呼叫了 wait,就立即阻塞自己,由wait自動分析是否當前程序的某個子程序已經退出,如果讓它找到了這樣乙個已經變成殭屍的子程序,wait 就會收集這個子程序的資訊,並把它徹底銷毀後返回 如果沒有找到這樣乙個子程序,wait就會一直阻塞在這裡,直到有乙個出現為止。wait 等待子程序中斷或結...

linux wait 與殭屍程序

在unix 系統中,乙個程序結束了,但是他的父程序沒有等待 呼叫wait waitpid 他,那麼他將變成乙個殭屍程序.但是如果該程序的父程序已經先結束了,那麼 該程序就不會變成殭屍程序,因為每個程序結束的時候,系統都會掃瞄當前系統 中所執行的所有程序,看有沒有哪個程序是剛剛結束的這個程序的子程序,...