syswait.h

syswait.h

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

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

相關函式

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
#include
main()
{
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=1501
This is the parent process .wait for child...
child’s pid =1501,exit status =5

waitpid()函式說明

waitpid()

會暫時停止目前進程的執行,直到有信號來到或子進程結束。如果在調用wait()時子進程已經結束,則wait()會立即返回子進程結束狀態值。子進程的結束狀態值會由參數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中。

相關詞條

相關搜尋

熱門詞條

聯絡我們