日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

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

來源:程序員人生   發布時間:2015-04-08 08:15:48 閱讀次數:3945次
#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的參數

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 精品视频在线播放 | 国产伦精品一区二区三区高清版 | av最新网站 | 成人在线免费视频 | 成人免费视频播放器 | 久久在线免费视频 | 欧美精品一区二区三区在线播放 | 九一在线免费观看 | 午夜三区 | 在线看污 | 精品久久国产 | 亚洲精品乱码久久久久久金桔影视 | 久久99精品久久久久久久久久久久 | 福利一区二区 | 免费一二三区 | 在线免费小视频 | 99久久这里只有精品 | 久久久久久毛片免费看 | 精品国产鲁一鲁一区二区张丽 | 大陆一级毛片免费视频观看 | 亚洲精品福利视频 | 国产在线一区二区 | 亚洲三级免费电影 | 色偷偷8888欧美精品久久 | 天堂成人国产精品一区 | 最新国产露脸在线观看 | 国产在线成人 | 日韩免费高清视频 | 久久久久久久久久国产 | 久久久亚洲精品视频 | 美日韩一区二区 | 久久综合久久综合久久 | 国产在线国偷精品免费看 | 97免费在线观看视频 | 日本精品在线观看视频 | 国产激情美女久久久久久吹潮 | 成人小视频在线观看 | 亚洲最大成人av | 在线欧美日韩 | 国产一级二级三级 | 亚洲视频精品在线 |