當前位置:編程學習大全網 - 遊戲軟體 - 進程什麽狀態wifstopped

進程什麽狀態wifstopped

進程什麽狀態wifstopped

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 中。

範例

參考wait()。

  • 上一篇:進口食品以哪個數字開頭的是轉基因食品?
  • 下一篇:lubuntu還是xubuntu
  • copyright 2024編程學習大全網