多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > UNIX多進程 - 銷毀僵尸進程 - wait()和waitpid()函數

UNIX多進程 - 銷毀僵尸進程 - wait()和waitpid()函數

來源:程序員人生   發布時間:2015-04-08 08:15:48 閱讀次數:3937次
#include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *statusPtr, int options);

現在要知道調用waitwaitpid的進程可能會產生甚么情況:

  • 如果其所有子進程都在運行,則阻塞
  • 如果1個子進程已終止,正在等待的父進程獲得到終止狀態,則獲得該子進程的終止狀態立即返回。
  • 如果他沒有任何子進程,則立即出錯返回。

如果進程由于接收到SIGCHLD信號而調用wait,則可期望wait會立即返回。但是如果在任意時刻調用wait則進程可能會阻塞。

#include "apue.h" #include <sys/wait.h> int main(void) { pid_t pid1,pid2; printf("before fork "); if((pid1=fork())<0){ printf("fork error"); }else if(pid1==0){ printf("child process 'spid=%d ",getpid()); sleep(3); }else{ pid2=wait(NULL); printf("wait process 's pid=%d ",pid2); } exit(0); }

結果:

當程序運行的時候明顯的可以看到在輸出最后1行 的時候等待了3秒鐘。也就是父進程等待子進程的結束。父進程才能捕捉子進程,然后得到wait要得到的結果。

參數status:

參數status是1個整型指針。如果參數status的值不是NULLwait就會把子進程退出時的狀態取出并存入其中,這是1個整數值(int),指出了子進程是正常退出還是被非正常結束的(1個進程也能夠被其他進程用信號結束),和正常結束時的返回值,或被哪個信號結束的等信息。由于這些信息被寄存在1個整數的不同2進制位中,所以用常規的方法讀取會非常麻煩,人們就設計了1套專門的宏(macro)來完成這項工作,下面我們來學習1下其中最經常使用的兩個:

  1. WIFEXITED(status)

這個宏用來指出子進程是不是為正常退出的,如果是,它會返回1個非零值

(請注意,雖然名字1樣,這里的參數status其實不同于wait唯1的參數

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日本一区不卡视频 | 亚洲网址在线 | 天堂成人网 | 欧美 亚洲 中文字幕 | 一级毛片一级毛片一级级毛片 | 欧美日韩无线在码不卡一区二区三区 | 俺去啦婷婷| freehdvideo性欧美 | 欧美黑人性受xxxx精品 | 亚洲国产精品一区二区三区久久 | 国产午夜人做人免费视频中文 | 国产一级在线视频 | 精品国产亚洲一区二区三区 | 久久精品男人的天堂 | 欧美性猛交xxxx乱大交蜜桃 | 碰碰久久 | 被男人吃奶添下面好舒服视频 | 黄网站色网址 | asmr国产一区在线 | 91精品日韩 | 99爱视频在线观看 | 亚洲免费视频在线 | 欧美freesex呦交6_10 | 在线午夜 | 国产成人久久精品区一区二区 | 日本高清一区二区三区不卡免费 | 碰碰久久 | free性日韩| 1000部精品久久久久久久久 | 黄色中文字幕在线观看 | 婷婷丁香激情 | 中文字幕亚洲欧美一区 | 99re这里有免费视频精品 | 国产欧美一区二区久久 | 黄色的网站免费观看 | 欧美一区精品 | 国产在线高清不卡免费播放 | 激性欧美激情在线播放16页 | 动漫网站在线观看 | 免费在线观看a | 国产欧洲亚洲 |