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

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

signal(SIGCHLD,SIG_IGN)和signal(SIGCLD,SIG_IGN)

Posted on 2008-08-21 18:30 Prayer 閱讀(13593) 評論(1)  編輯 收藏 引用 所屬分類: LINUX/UNIX/AIX

 

在子進程結束后產生了僵死進程,用了signal(SIGCHLD,SIG_IGN)和signal(SIGCLD,SIG_IGN)都不行,兩個能一起用嗎?  

你產生子進程時fork兩次,這樣由于第一次fork產生的子進程在fork之后就退出,所以第二次fork產生的子進程成為“孤兒“進程,init進程會接管它,成為它的父進程,而init進程肯定會處理了SIGCHLD信號,所以這樣也不會出現僵死進程。  

在fork前加上信號處理函數:  
  signal(SIG_CHLD,   Proc_CHLD);  
  void   Proc_CHLD(int   SIGNO)  
  {  
    int   pid   =   -1;  
    int   stat;  
    while(pid=waitpid(0,   &stat,   WHNONG);  
  }  



1 樓95533(鼠標墊)回復于 2002-11-11 09:40:38 得分 0

可以一起用,這兩句的意思是屏蔽SIGCHLD和SIGCLD信號。Top

2 樓ari(薛定鍔)回復于 2002-11-11 10:15:36 得分 0

fork   兩次即可解決Top

3 樓gongdath(gongdath)回復于 2002-11-11 12:39:28 得分 0

應該在父進程中調用wait或waitpid涵數.Top

4 樓1010101010(Number)回復于 2002-11-12 09:31:37 得分 0

最好是用waitpid,因可能有多個子進程,而unix的   信號是不排隊的Top

5 樓wang11912(天天練習)回復于 2002-11-26 12:01:20 得分 0

可是有的程序也沒有用wait,waitpid卻沒有產生僵死進程,真的不知道為什么?  
  Top

6 樓yanyanyan(西門吹鹽)回復于 2002-11-26 14:30:13 得分 10

只有長期運行而且要產生子進程的程序才需要用wait或waitpid。  
  僵死進程產生的原因:  
                子進程退出后(不管是否是正常退出),它在內存中會遺留部分信息成為一個僵死進程,同時內核會向其父進程發送SIGCHLD(或SIGCLD)信號。此時要分幾種情況:  
            1、父進程處理SIGCHLD信號,調用wait,僵死進程消失。這樣我們就看不到僵尸進程。  
            2、父進程忽略SIGCHLD信號,隨著子進程不斷產生、結束,僵死進程的數目不斷增加,導致影響系統速度及其他一些問題。  
          不需長期運行的程序,即使產生子進程也不會導致大量僵死進程存在。因為,父進程退出時,其產生的子進城成為“孤兒“進程,由init(1號進程)進程接管,init進程在子進程退出時會處理SIGCHLD信號,給子進程“收尸“。  
    推薦摟主看本書--《Advanced   Programming   in   the   UNIX   Environment》(Richard   Stevents著)。  
   
  Top

7 樓wang11912(天天練習)回復于 2002-11-26 17:25:20 得分 0

有的長期運行的程序只用了  
  signal(SIGCHLD,SIG_IGN);  
  都不會產生僵死進程,為什么加了  
  signal(SIGCLD,SIG_IGN);  
  都不管用,都在AIX下運行。  
  按照Advanced   Programming   in   the   UNIX   Environment中的說法,如果用了  
  signal(SIGCHLD,SIG_IGN)就可避免僵死進程了  
  Top

8 樓wwwunix(木易)回復于 2002-11-26 17:46:40 得分 5

解決辦法:  
  在父進程中用wait()或waitpid()來接收終止的子進程。Top

9 樓yanyanyan(西門吹鹽)回復于 2002-11-27 10:50:16 得分 0

-----------------------------------------------------------------  
  按照Advanced   Programming   in   the   UNIX   Environment中的說法,如果用了  
  signal(SIGCHLD,SIG_IGN)就可避免僵死進程了??????????????  
  -----------------------------------------------------------------  
  誰說的?  
  signal(SIGCHLD,SIG_IGN)是什么意思?--忽略SIGCHLD信號!!!!  
  在長期運行的程序忽略SIGCHLD信號只會產生很多僵死進程直到父進程結束。  
   
  只有在父進程中捕獲SIGCHLD信號,并在SIGCHLD信號處理函數中調用wait才能避免僵死進程的出現。  
  當然ari(男人阿日)說的辦法也行,就是在你產生子進程時fork兩次,這樣由于第一次fork產生的子進程在fork之后就退出,所以第二次fork產生的子進程成為“孤兒“進程,init進程會接管它,成為它的父進程,而init進程肯定會處理了SIGCHLD信號,所以這樣也不會出現僵死進程。  
  摟主的理解有點偏差,好好看看大家的貼子巴。《Advanced   Programming   in   the   UNIX   Environment》上也說的很清楚。  
   
   
  Top

10 樓flyingcrean(flying鶴)回復于 2002-11-27 13:51:27 得分 0

在fork前加上信號處理函數:  
  signal(SIG_CHLD,   Proc_CHLD);  
  void   Proc_CHLD(int   SIGNO)  
  {  
    int   pid   =   -1;  
    int   stat;  
    while(pid=waitpid(0,   &stat,   WHNONG);  
  }  
  Top

11 樓wang11912(天天練習)回復于 2002-11-27 15:20:10 得分 0

我已經改為用wait的方式了,解決了。  
  因為是別人的程序,本來不想改動,所以奇怪為什么原來沒有問題,現在卻導致經常要重新啟動,可能是操作系統哪個補丁沒打上。  
  謝謝大家。Top

12 樓bnwxf(有一種感覺叫從容)回復于 2002-11-28 20:46:29 得分 0

unix   網絡編程。  
  里面將了一個用循環寫的SIG_CLD的處理函數。  
  如果子進程很多,推薦用這一標準做法。Top

13 樓whoke(hy)回復于 2002-12-07 14:50:17 得分 5

to     yanyanyan(西門吹鹽)   (   )   信譽:100     2002-11-27   10:50:00     得分:0    
   
  APUE上是這么說的,不過是指明了版本的.SVR4不會產生僵尸,而4.3+BSD必須wait     waitpid   才能避免產生僵尸進程。  
  兩次fork要保證父進程在子進程退出前exit.Top

14 樓cwhh(hh)回復于 2002-12-28 17:56:59 得分 0

一般當一個進程終止后都會發送SIGCHLD信號給它的父進程,并由此變為僵死進程直到父進程接收了其狀態報告其資源才會被系統釋放;  
  處理方法有3種:  
  1. 當子進程終止時父進程接收SIGCHLD信號并調用waitpid()函數接收其狀態報告,最好用sigaction(),signal()不可靠;  
  2. 通過函數sigaction指明標志SA_NOCLDWAIT來指定信號SIGCHLD的動作,這使得內核在調用者的子進程終止時不創建僵死進程。  
  3. 二次fork調用;  
  Top

15 樓yanyanyan(西門吹鹽)回復于 2002-12-30 10:57:06 得分 0

謝謝   whoke(hy)   提醒,抱歉,我可能講的不是很清楚

Feedback

# re: signal(SIGCHLD,SIG_IGN)和signal(SIGCLD,SIG_IGN)  回復  更多評論   

2013-12-07 01:09 by 客串一回
謝謝,今天用fork寫httpd的時候,發現進程僵死了,不知該怎么辦。
多謝提示,該去看看signal相關的東西
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久国产精品电影| 欧美激情视频免费观看| 久久精品免费电影| 亚洲第一精品夜夜躁人人爽| 一区二区三区视频观看| 欧美黑人在线播放| 亚洲肉体裸体xxxx137| avtt综合网| 亚洲一区在线播放| 欧美日韩国产首页在线观看| 欧美三日本三级少妇三99| 国产精品vip| 一区二区三区四区蜜桃| 最新69国产成人精品视频免费| 欧美在线视频一区二区| 国产亚洲a∨片在线观看| 黄色资源网久久资源365| 午夜精品电影| 免费毛片一区二区三区久久久| 亚洲欧美视频在线| 国内自拍亚洲| 欧美freesex8一10精品| 乱中年女人伦av一区二区| 在线观看欧美亚洲| 亚洲国产欧美在线人成| 一区二区三区高清不卡| 欧美激情一二三区| 亚洲一区二区三区在线| 亚洲一级片在线观看| 久久综合伊人77777| 欧美三级电影精品| 亚洲午夜精品网| 亚洲欧美久久久| 精品51国产黑色丝袜高跟鞋| 日韩系列在线| 日韩视频免费在线观看| 国产精品激情电影| 久久久综合网| 欧美激情综合五月色丁香小说| 国产乱码精品1区2区3区| 久久成人精品无人区| 欧美亚洲一区在线| 欧美一区二区三区啪啪| 国产日韩一区在线| 久久天天躁夜夜躁狠狠躁2022 | 国产又爽又黄的激情精品视频| 久久九九全国免费精品观看| 亚洲国内在线| 欧美在线视频观看免费网站| 亚洲大片av| 久久久久久亚洲精品中文字幕| 久久久噜久噜久久综合| 亚洲深夜福利在线| 久久精品理论片| 国产精品自在线| 亚洲美女毛片| 一区二区三区国产精品| 一色屋精品视频在线观看网站| 91久久夜色精品国产九色| 国产毛片一区| 亚洲影视九九影院在线观看| 午夜精品在线视频| 日韩一级在线| 久久女同互慰一区二区三区| 99精品免费网| 亚洲精选一区二区| 国产亚洲精品自拍| 亚洲精选在线观看| 欧美成人精品三级在线观看| 亚洲午夜久久久| 日韩视频一区二区三区| 国产一区成人| 亚洲一区二区av电影| 亚洲精品黄网在线观看| 欧美a级片网站| 久久综合中文字幕| 亚洲黄色精品| 亚洲国产成人不卡| 国产乱人伦精品一区二区| 91久久精品一区| 永久91嫩草亚洲精品人人| 麻豆九一精品爱看视频在线观看免费| 亚洲欧美一区二区激情| 国产欧美一区二区三区另类精品 | 国产乱码精品一区二区三区不卡| 国产精品99久久久久久人| 久久色在线观看| 亚洲精品久久久久久久久久久| 性久久久久久| 亚洲电影天堂av| 欧美二区在线| 欧美激情影音先锋| 欧美xxx在线观看| 欧美精品18videos性欧美| 国产欧美日韩一区二区三区在线 | 亚洲一区成人| 在线亚洲免费| 欧美日韩一区综合| 亚洲精品欧美日韩| 国产精品白丝黑袜喷水久久久 | 欧美偷拍另类| 久久国产精品久久久久久久久久| 午夜精品久久久久久久久久久| 在线视频精品一| 午夜激情综合网| 欧美一区二区大片| 国产亚洲精久久久久久| 久久精品在线视频| 欧美国产在线电影| 日韩一级裸体免费视频| 亚洲欧美日韩直播| 久久精品国产在热久久| 一区二区在线视频播放| 巨胸喷奶水www久久久免费动漫| 99视频热这里只有精品免费| 在线亚洲免费视频| 国产精品久久久久久亚洲调教 | 欧美成人一区二区在线| 欧美国产先锋| 亚洲午夜av电影| 国产午夜精品在线| 欧美福利一区二区三区| 亚洲深夜福利在线| 亚洲人成网站999久久久综合| 欧美精品日本| 欧美大片在线看| 国产亚洲欧美另类中文| 久久久精品性| 久久大逼视频| 亚洲人成欧美中文字幕| 久久成人免费| 91久久久久久国产精品| 欧美在现视频| 亚洲精品免费看| 欧美18av| 性欧美暴力猛交另类hd| 亚洲人成久久| 久久中文在线| 一区久久精品| 欧美一区日本一区韩国一区| 中文网丁香综合网| 国产一区视频在线观看免费| 欧美另类变人与禽xxxxx| 欧美一区二区观看视频| 欧美在线一级va免费观看| 91久久久国产精品| 欧美成va人片在线观看| 欧美成人免费观看| 午夜欧美精品久久久久久久| 国产精品久久一区二区三区| 久久福利电影| 久久在线免费视频| 午夜精品久久久久久99热软件 | 久久久久久久综合狠狠综合| 中日韩美女免费视频网址在线观看 | 久久久亚洲综合| 亚洲欧洲在线观看| 久久五月天婷婷| 久久久久久久久久久一区 | 国产亚洲欧美一区在线观看| 一区二区三区毛片| 亚洲视频在线观看一区| 欧美色综合天天久久综合精品| 美女视频一区免费观看| 午夜在线精品偷拍| 亚洲男人天堂2024| 欧美三级在线视频| 亚洲视频在线观看三级| 一区二区三区高清视频在线观看| 老色批av在线精品| 男男成人高潮片免费网站| 国产欧美日韩91| 久久免费视频网站| 亚洲午夜在线视频| 亚洲一品av免费观看| 日韩视频一区二区三区| 欧美激情精品久久久久久| 一区二区高清| 亚洲电影视频在线| 亚洲人成在线观看一区二区 | 欧美v亚洲v综合ⅴ国产v| 激情久久久久久| 国产一区二区中文| 久久一区精品| 巨胸喷奶水www久久久免费动漫| 欧美成人在线网站| 免费一级欧美片在线播放| 亚洲尤物在线| 在线看片欧美| 欧美日韩国产黄| 蜜桃久久av| 亚洲在线观看视频网站| 亚洲三级电影全部在线观看高清 | 亚洲电影在线| 日韩亚洲欧美成人一区| 欧美一级艳片视频免费观看| 欧美一区二区啪啪| 亚洲区第一页| 国产精品久久97| 国产欧美日韩亚州综合|