linux wait函式解析
程序一旦呼叫了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()。
C 中程序的應用(網路程式設計)
編寫 前新增 using system.diagnostics 1.獲取本機的 string processname 程序名成 int processid id int threadnumber 程序數 timespan cputime cpu時間 long processmemory 記憶體數量 ...
2010 07 22 Linux C 程序程式設計
1 獲取本程序id pid t getpid void 2 獲取父程序id pid t getppid void 3 建立子程序 pid t fork void 被呼叫一次,卻返回兩次,它可能有三種不同的返回值 在父程序中,fork返回新建立的子程序的pid 在子程序中,fork返回0 如果出錯,f...
LINUX C 語言 程序管理(一)
子程序和父程序的開始與結束 子程序結束的時候會向父程序傳送訊號,讓父程序幫助 程序 父程序先結束的時候,子程序會過繼到init程序下 即指定init程序為新的父程序 如果父程序因為各種原因沒有收到子程序傳送的訊號,則無法 子程序的資源,子程序會成為殭屍程序 子程序與父程序的資源 程序的記憶體區劃分 ...