青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天之道

享受編程的樂趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

wait 和waitpid詳解

Posted on 2013-04-13 22:05 hoshelly 閱讀(1410) 評論(0)  編輯 收藏 引用 所屬分類: Linux
wait的函數(shù)原型是:  
#include<sys/types.h>
#include <sys/wait.h>

pid_t wait(int *status)     
      進(jìn)程一旦調(diào)用了wait,就立即阻塞自己,由wait自動分析是
否當(dāng)前進(jìn)程的某個子進(jìn)程已經(jīng)退出,如果讓它找到了這樣一個
已經(jīng)變成僵尸的子進(jìn)程, wait就會收集這個子進(jìn)程的信息,并
把它徹底銷毀后返回;如果沒有找到這樣一個子進(jìn)程,wait就
會一直阻塞在這里,直到有一個出現(xiàn)為止。    
      參數(shù)status用來保存被收集進(jìn)程退出時的一些狀態(tài),它是
一個指向int類型的指針。但如果我們對這個子進(jìn)程是如何死掉
的毫不在意,只想把這個僵尸進(jìn)程消滅掉,(事實(shí)上絕大多數(shù)
情況下,我們都會這樣想),我們就可以設(shè)定這個參數(shù)為
NULL,就象下面這樣:     pid = wait(NULL);
如果成功,wait會返回被收集的子進(jìn)程的進(jìn)程ID,如果調(diào)用進(jìn)
程沒有子進(jìn)程,調(diào)用就會失敗,此時wait返回-1,同時errno被
置為ECHILD。 
      waitpid的函數(shù)原型是:   
waitpid系統(tǒng)調(diào)用在Linux函數(shù)庫中的原型是:   
#include <sys/types.h>#include <sys/wait.h>

pid_t waitpid(pid_t pid,int *status,int options)
      從本質(zhì)上講,系統(tǒng)調(diào)用waitpid和wait的作用是完全相同
的,但waitpid多出了兩個可由用戶控制的參數(shù)pid和options,
從而為我們編程提供了另一種更靈活的方式。
下面我們就來詳細(xì)介紹一下這兩個參數(shù):     
● pid     從參數(shù)的名字pid和類型pid_t中就可以看出,
這里需要的是一個進(jìn)程ID。但當(dāng)pid取不同的值時,在這里有不
同的意義。     pid>0時,只等待進(jìn)程ID等于pid的子進(jìn)
程,不管其它已經(jīng)有多少子進(jìn)程運(yùn)行結(jié)束退出了,只要指定的
子進(jìn)程還沒有結(jié)束,waitpid就會一直等下去。     pid=-
1時,等待任何一個子進(jìn)程退出,沒有任何限制,此時waitpid
和wait的作用一模一樣。     pid=0時,等待同一個進(jìn)程
組中的任何子進(jìn)程,如果子進(jìn)程已經(jīng)加入了別的進(jìn)程組,
waitpid不會對它做任何理睬。     pid<-1時,等待一個
指定進(jìn)程組中的任何子進(jìn)程,這個進(jìn)程組的ID等于pid的絕對
值。   
● options   options提供了一些額外的選項(xiàng)來控制waitpid,
目前在Linux中只支持WNOHANG和WUNTRACED兩個選項(xiàng),
這是兩個常數(shù),可以用"|"運(yùn)算符把它們連接起來使用,比如:
  ret=waitpid(-1,NULL,WNOHANG | WUNTRACED);   
如果我們不想使用它們,也可以把options設(shè)為0,如:   
ret=waitpid(-1,NULL,0);     如果使用了WNOHANG參數(shù)
調(diào)用waitpid,即使沒有子進(jìn)程退出,它也會立即返回,不會像
wait那樣永遠(yuǎn)等下去。     而WUNTRACED參數(shù),由于
涉及到一些跟蹤調(diào)試方面的知識,加之極少用到,這里就不多
費(fèi)筆墨了,有興趣的讀者可以自行查閱相關(guān)材料。    看
到這里,聰明的讀者可能已經(jīng)看出端倪了--wait不就是經(jīng)過包裝
的waitpid嗎?沒錯,察看<內(nèi)核源碼目錄>/include/unistd.h文
件349-352行就會發(fā)現(xiàn)以下程序段:     static inline
pid_t wait(int * wait_stat)   {    return waitpid(-
1,wait_stat,0);   }      返回值和錯誤     
waitpid的返回值比wait稍微復(fù)雜一些,一共有3種情況:  
● 當(dāng)正常返回的時候,waitpid返回收集到的子進(jìn)程的進(jìn)程ID;
● 如果設(shè)置了選項(xiàng)WNOHANG,而調(diào)用中waitpid發(fā)現(xiàn)沒有已
退出的子進(jìn)程可收集,則返回0;      
● 如果調(diào)用中出錯,則返回-1,這時errno會被設(shè)置成相應(yīng)的
值以指示錯誤所在;當(dāng)pid所指示的子進(jìn)程不存在,或此進(jìn)程存
在,但不是調(diào)用進(jìn)程的子進(jìn)程,waitpid就會出錯返回,這時
errno被設(shè)置為ECHILD 其它: 調(diào)用 wait&waitpid 來處理終止
的子進(jìn)程: pid_t wait(int * statloc); pid_t waitpid(pid_t pid,
int *statloc, int options); 兩個函數(shù)都返回兩個值:函數(shù)的返回
值和終止的子進(jìn)程ID,而子進(jìn)程終止的狀態(tài)則是通過statloc指
針返回的。 wait&waitpid 的區(qū)別是顯而易見的,wait等待第一
個終止的子進(jìn)程,而waitpid則可以指定等待特定的子進(jìn)程。這
樣的區(qū)別可能會在下面這種情況時表現(xiàn)得更加明顯:當(dāng)同時有
5個客戶連上服務(wù)器,也就是說有五個子進(jìn)程分別對應(yīng)了5個客
戶,此時,五個客戶幾乎在同時請求終止,這樣一來,幾乎同
時,五個FIN發(fā)向服務(wù)器,同樣的,五個SIGCHLD信號到達(dá)服
務(wù)器,然而,UNIX的信號往往是不會排隊(duì)的,顯然這樣一來,
信號處理函數(shù)將只會執(zhí)行一次,殘留剩余四個子進(jìn)程作為僵尸
進(jìn)程駐留在內(nèi)核空間。此時,正確的解決辦法是利用waitpid(-
1, &stat, WNOHANG)防止留下僵尸進(jìn)程。其中的pid為-1表
明等待第一個終止的子進(jìn)程,而WNOHANG選擇項(xiàng)通知內(nèi)核在
沒有已終止進(jìn)程項(xiàng)時不要阻塞。
wait&waitpid 區(qū)別 :
waitpid提供了wait函數(shù)不能實(shí)現(xiàn)的3個功能: waitpid等待特定的
子進(jìn)程, 而wait則返回任一終止?fàn)顟B(tài)的子進(jìn)程; waitpid提供了一
個wait的非阻塞版本; waitpid支持作業(yè)控制(以WUNTRACED選
項(xiàng)). 用于檢查wait和waitpid兩個函數(shù)返回終止?fàn)顟B(tài)的宏: 這兩個
函數(shù)返回的子進(jìn)程狀態(tài)都保存在statloc指針中, 用以下3個宏可
以檢查該狀態(tài): WIFEXITED(status): 若為正常終止, 則為真. 此
時可執(zhí)行 WEXITSTATUS(status): 取子進(jìn)程傳送給exit或_exit
參數(shù)的低8位. WIFSIGNALED(status): 若為異常終止, 則為真.
此時可執(zhí)行 WTERMSIG(status): 取使子進(jìn)程終止的信號編號.
WIFSTOPPED(status): 若為當(dāng)前暫停子進(jìn)程, 則為真. 此時可
執(zhí)行 WSTOPSIG(status): 取使子進(jìn)程暫停的信號編號
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久性色av| 亚洲精品一二| 欧美日韩国产限制| 欧美激情综合五月色丁香小说| 久久精品中文字幕免费mv| 午夜国产精品影院在线观看| 午夜伦欧美伦电影理论片| 久久精品国产亚洲精品| 久久一二三区| 欧美精品日韩三级| 国产精品制服诱惑| 在线精品视频一区二区| 夜夜精品视频| 久久久久久久久久久成人| 欧美一区视频| 亚洲第一在线综合网站| 亚洲三级电影全部在线观看高清 | 久久在线91| 欧美激情一区三区| 一本色道久久综合| 久久国产视频网| 欧美日韩另类在线| 精品动漫3d一区二区三区免费版| 一本久道久久综合狠狠爱| 久久成人一区二区| 亚洲丁香婷深爱综合| 亚洲图片在线| 女主播福利一区| 国产欧美一区二区精品仙草咪| 亚洲人久久久| 久久久欧美一区二区| 99re6这里只有精品| 久久免费偷拍视频| 国产午夜精品麻豆| 亚洲一区二区三区免费在线观看| 久久人人爽人人爽爽久久| 一区二区三区久久久| 欧美国产第一页| 一区二区三区在线观看国产| 亚洲综合色婷婷| 亚洲人精品午夜在线观看| 久久看片网站| 国产精品揄拍一区二区| 在线视频亚洲欧美| 亚洲第一成人在线| 久久免费精品日本久久中文字幕| 国产精品香蕉在线观看| 亚洲视频播放| av72成人在线| 国产精品成人观看视频国产奇米| 99在线视频精品| 亚洲人精品午夜在线观看| 欧美韩国日本综合| 99re热精品| 99riav久久精品riav| 欧美精品一区二区三区蜜桃 | 欧美成人69av| 久久久精品一区| 韩国一区二区三区在线观看| 久久九九免费| 欧美一区二区三区免费观看视频 | 欧美岛国激情| 亚洲国产一区二区三区青草影视| 免费人成精品欧美精品| 久久婷婷国产综合精品青草| 狠狠干综合网| 欧美成年网站| 老司机免费视频久久| 久久久久国产精品一区| 午夜在线不卡| 国产日韩欧美精品一区| 久久九九精品| 美女网站在线免费欧美精品| 亚洲欧洲综合另类| 亚洲精品欧洲精品| 欧美精品色一区二区三区| 亚洲一区二区不卡免费| 亚洲男同1069视频| 国产欧美一区二区三区久久| 久久亚洲精品网站| 麻豆av福利av久久av| 99视频一区| 亚洲欧美另类国产| 在线国产亚洲欧美| 亚洲精品影院在线观看| 国产精品一区二区在线观看| 久久婷婷综合激情| 欧美激情1区2区3区| 亚洲欧美中文日韩在线| 久久精品一区二区| 亚洲少妇一区| 久久精品最新地址| 亚洲一卡久久| 久久综合网络一区二区| 一区二区三区不卡视频在线观看 | 老司机午夜精品视频| 欧美久久久久中文字幕| 亚洲综合久久久久| 久久美女艺术照精彩视频福利播放| 亚洲国产成人精品久久久国产成人一区 | 美女诱惑黄网站一区| 亚洲欧美日本国产有色| 久久一区二区三区四区| 亚洲欧美不卡| 欧美成人影音| 久久久精品国产99久久精品芒果| 欧美激情一区二区三区在线视频观看 | 亚洲福利视频专区| 亚洲主播在线| 亚洲精品在线观看视频| 欧美在线视频不卡| 午夜精品免费视频| 欧美区在线播放| 欧美黄色视屏| 激情伊人五月天久久综合| av成人免费观看| 亚洲美女尤物影院| 欧美成人精品h版在线观看| 久久亚洲高清| 一区二区成人精品 | 亚洲人成77777在线观看网| 国产欧美一区二区三区在线老狼| 亚洲欧洲综合另类在线| 精品不卡一区| 欧美一区=区| 性久久久久久| 欧美体内she精视频| 亚洲国产网站| 亚洲成色最大综合在线| 亚洲欧美日韩一区二区在线| 亚洲一区二区四区| 欧美天堂在线观看| 一区二区三区 在线观看视频| 一本一本久久a久久精品综合麻豆| 美女精品在线| 亚洲国产成人在线视频| 亚洲毛片在线观看.| 久热精品视频在线| 欧美成人dvd在线视频| 亚洲风情在线资源站| 欧美成人高清视频| 亚洲国产91精品在线观看| 亚洲精品亚洲人成人网| 欧美激情在线观看| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲乱码国产乱码精品精98午夜 | 亚洲欧美成人| 国产精品视频yy9299一区| 宅男精品导航| 久久久久久亚洲精品中文字幕| 伊人春色精品| 欧美韩日一区二区三区| 99国产精品久久久久久久成人热| 亚洲一区中文| 国产视频欧美视频| 久久尤物视频| 99av国产精品欲麻豆| 欧美在线观看视频| 伊伊综合在线| 欧美日韩在线综合| 欧美一区二视频| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲国产日韩欧美一区二区三区| 99精品视频一区| 国产精品一区二区你懂得 | 久久精品亚洲一区| 亚洲欧洲精品一区二区精品久久久| 一区二区电影免费在线观看| 国产精品家庭影院| 久久精品成人| 99视频精品全部免费在线| 黄色资源网久久资源365| 精品二区久久| 欧美日韩国产在线| 亚洲欧美另类在线| 欧美成va人片在线观看| 亚洲一级黄色片| 宅男精品导航| 国产一区二区久久久| 亚洲日本久久| 亚洲欧美怡红院| 在线精品亚洲一区二区| 欧美午夜宅男影院| 久久手机精品视频| 亚洲欧美日韩直播| 亚洲精品综合在线| 久久综合久色欧美综合狠狠| 99视频精品在线| 在线成人免费观看| 国产精品久久午夜| 欧美激情国产精品| 小黄鸭精品密入口导航| 99香蕉国产精品偷在线观看| 欧美成人dvd在线视频| 午夜久久久久| 一区二区三区四区五区视频| 亚洲日本免费| 亚洲高清在线精品| 精品电影一区| 精品成人国产在线观看男人呻吟|