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
main()
{
pid_t pid;
int status,i;
if(fork()= =0){
printf(“This is the child process .pid =%d\n”,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=^d\n”,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(等待子程式中斷或結束)
相關函式 wait,fork
表標頭檔案
#include
#include
定義函式 pid_t waitpid(pid_t pid,int * status,int options);
函式說明
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 中。
相關函式 waitpid,fork
表標頭檔案
#include
#include
定義函式 pid_t wait (int * status);
函式說明
wait()會暫時停止目前程式的執行,直到有訊號來到或子程式結
束。如果在呼叫wait()時子程式已經結束,則wait()會立即返
回子程式結束狀態值。子程式的結束狀態值會由引數status 返回,
而子程式的程式識別碼也會一快返回。如果不在意結束狀態值,則
引數status 可以設成NULL。子程式的結束狀態值請參考waitpid()。
返回值
如果執行成功則返回子程式識別碼(PID),如果有錯誤發生則返回
-1。失敗原因存於errno 中。
附加說明
範例
#include
#include
#include
#include
main()
{
pid_t pid;
int status,i;
if(fork()= =0){
printf(“This is the child process .pid =%d\n”,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=^d\n”,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(等待子程式中斷或結束)
相關函式 wait,fork
表標頭檔案
#include
#include
定義函式 pid_t waitpid(pid_t pid,int * status,int options);
函式說明
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 中。
相關文章
- 尤拉函式詳解函式
- malloc函式詳解函式
- kill() 函式詳解函式
- ioctl()函式詳解函式
- gluLookAt 函式詳解函式
- fopencookie函式詳解Cookie函式
- 詳解Java函式式介面Java函式
- 多程式函式系列fork(), wait(), exec()系列,system(), posix_spawn()例項詳解函式AI
- Socket send函式和recv函式詳解函式
- 建構函式詳解函式
- 函式引數詳解函式
- mysql常用函式詳解MySql函式
- 箭頭函式詳解函式
- fcntl函式用法詳解函式
- JavaScript函式模式詳解JavaScript函式模式
- eval()函式用法詳解函式
- Oracle 聚合函式詳解Oracle函式
- 詳解JavaScript函式模式JavaScript函式模式
- oracle TRANSLATE函式詳解Oracle函式
- select 函式詳解函式
- xslt函式詳解函式
- Oracle 分析函式詳解Oracle函式
- PHP函式處理函式例項詳解PHP函式
- mysql MASTER_POS_WAIT函式MySqlASTAI函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- ORALCE函式:LAG()和LEAD() 分析函式詳解函式
- python socket函式詳解Python函式
- TypeScript中的函式詳解TypeScript函式
- 箭頭函式this指向詳解函式
- Java建構函式詳解Java函式
- vimscript-expand函式詳解函式
- Oracle單行函式詳解Oracle函式
- setdefaultencoding函式使用詳解Encoding函式
- 詳解C語言函式C語言函式
- PHP BC Math 函式詳解PHP函式
- getpid()函式用法詳解函式
- ORACLE to_char函式詳解Oracle函式
- oracle over函式 詳解(轉)Oracle函式