sys/wait.h

2puT發表於2016-07-21


syswait.h,計算機程式語言函式,使用wait()和waitpid()函式時需要include這個標頭檔案

簡介

編輯
使用wait()和waitpid()函式時需要include這個標頭檔案
syswait.hsyswait.h

相關函式

編輯
wait(等待子程式中斷或結束) 相關函式 waitpid(),fork()
表標頭檔案 #include #include
定義函式 pid_t wait (int * status);
waitpid(等待子程式中斷或結束) 相關函式 wait,fork
表標頭檔案 #include #include
定義函式 pid_t waitpid(pid_t pid,int * status,int options);

wait()函式說明

編輯
wait()
會暫時停止目前程式的執行,直到有訊號來到或子程式結束。如果在呼叫wait()時子程式已經結束,則wait()會立即返回子程式結束狀態值。子程式的結束狀態值會由引數status返回,而子程式的程式識別碼也會一起返回。如果不在意結束狀態值,則引數status可以設成NULL。子程式的結束狀態值請參考waitpid()。
返回值 如果執行成功則返回子程式識別碼(PID),如果有錯誤發生則返回-1。失敗原因存於errno中。

wait()範例

編輯
#include#include#include#includemain(){pid_t pid;int status,i;if(fork()= =0){printf(“This is the child process .pid =%dn”,getpid());exit(5);}else{sleep(1);printf(“This is the parent process ,wait for child...n”;pid=wait(&status);i=WEXITSTATUS(status);printf(“child’s pid =%d .exit status=^dn”,pid,i);}}
執行 This is the child process.pid=1501This is the parent process .wait for child...child’s pid =1501,exit status =5

waitpid()函式說明

編輯
waitpid()
會暫時停止目前程式的執行,直到有訊號來到或子程式結束。如果在呼叫wait()時子程式已經結束,則wait()會立即返回子程式結束狀態值。子程式的結束狀態值會由引數status返回,而子程式的程式識別碼也會一快返回。如果不在意結束狀態值,則引數status可以設成NULL。
引數pid為欲等待的子程式識別碼,其他數值意義如下:pid0 等待任何子程式識別碼為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中。

相關文章