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

Prayer

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

這幾天把一個(gè)網(wǎng)絡(luò)流量采集器程序基本改好了,原來(lái)在main函數(shù)中把幾個(gè)子線程啟動(dòng)后就睡10分鐘后開(kāi)始清理子線程后退出。現(xiàn)在想改成子線程啟動(dòng)后主線程進(jìn)入無(wú)限睡眠,直到收到SIGTERM或SIGINT。主程序如下:
其他頭文件
#include <signal.h> //信號(hào)處理所需要的頭文件
int main(int argc, char * argv[]){
  //其他所需要的變量聲明  
  sigset_t sig_set,sig_pending;


  // 設(shè)置信號(hào)阻塞
  sigemptyset(&sig_set);
  sigaddset(&sig_set,SIGTERM);
  sigaddset(&sig_set,SIGINT);
  sigprocmask(SIG_BLOCK,&sig_set,NULL);


  啟動(dòng)幾個(gè)子線程  
  ...........

  // 設(shè)置信號(hào)阻塞
  sigemptyset(&sig_set);
  sigaddset(&sig_set,SIGTERM);
  sigaddset(&sig_set,SIGINT);
  sigprocmask(SIG_BLOCK,&sig_set,NULL);
 
  //主線程進(jìn)入睡眠,等待信號(hào)到達(dá)后跳出睡眠  
  while(1){
          sigpending(&sig_pending);
          if(sigismember(&sig_pending, SIGTERM)||
                    sigismember(&sig_pending,SIGINT)){
                break;
          }
          sleep(2);
  }

  //子線程退出情理
  ................
  return 0;

}

程序運(yùn)行后發(fā)現(xiàn) 當(dāng)按下Ctrl+C后程序沒(méi)有出現(xiàn)子線程退出時(shí)的信息而是立刻退出,非常奇怪。
仔細(xì)分析了一下,發(fā)現(xiàn)問(wèn)題在于忽略了Linux下的多線程模型的特點(diǎn)。

Linux下的線程實(shí)質(zhì)上是輕量級(jí)進(jìn)程(light weighted process),線程生成時(shí)會(huì)生成對(duì)應(yīng)的進(jìn)程控制結(jié)構(gòu),只是該結(jié)構(gòu)與父線程的進(jìn)程控制結(jié)構(gòu)共享了同一個(gè)進(jìn)程內(nèi)存空間。 同時(shí)新線程的進(jìn)程控制結(jié)構(gòu)將從父線程(進(jìn)程)處復(fù)制得到同樣的進(jìn)程信息,如打開(kāi)文件列表和信號(hào)阻塞掩碼等。由于我們是在子線程生成之后修改了信號(hào)阻塞掩碼,此刻子線程使用的是主線程原有的進(jìn)程信息,因此子線程仍然會(huì)對(duì)SIGINT和SIGTERM信號(hào)進(jìn)行反應(yīng),因此當(dāng)我們用Ctrl+C發(fā)出了SIGINT信號(hào)的時(shí)候,主進(jìn)程不處理該信號(hào),而子進(jìn)程(線程)會(huì)進(jìn)行默認(rèn)處理,即退出。子進(jìn)程退出的同時(shí)會(huì)向父進(jìn)程(線程)發(fā)送SIGCHLD信號(hào),表示子進(jìn)程退出,由于該信號(hào)沒(méi)有被阻塞,因此會(huì)導(dǎo)致主進(jìn)程(線程)也立刻退出,出現(xiàn)了前述的運(yùn)行情況。因而該問(wèn)題的一個(gè)解決方法是在子線程生成前進(jìn)行信號(hào)設(shè)置, 或在子線程內(nèi)部進(jìn)行信號(hào)設(shè)置。 由于子線程是往往是一個(gè)事務(wù)處理函數(shù),因此我建議在簡(jiǎn)單的情況下采用前者,如果需要處理的信號(hào)比較復(fù)雜,那就必須使用后一種方法來(lái)處理。這樣,以上的程序邏輯改為如下就可以了:

#include <signal.h> //信號(hào)處理所需要的頭文件
int main(int argc, char * argv[]){
  //其他所需要的變量聲明  
  sigset_t sig_set,sig_pending;
  啟動(dòng)幾個(gè)子線程  
  ...........

 
  //主線程進(jìn)入睡眠,等待信號(hào)到達(dá)后跳出睡眠  
  while(1){
          sigpending(&sig_pending);
          if(sigismember(&sig_pending, SIGTERM)||
                    sigismember(&sig_pending,SIGINT)){
                break;
          }
          sleep(2);
  }

  //子線程退出情理
  ................
  return 0;

}
文章出處:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20090317/162211.html)

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            麻豆精品在线视频| 欧美性生交xxxxx久久久| 久久久噜噜噜久久久| 欧美视频日韩视频| 日韩视频一区二区| 你懂的网址国产 欧美| 欧美一区二区成人| 国产欧美va欧美va香蕉在| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 久久久91精品| 国产欧美精品国产国产专区| 一区二区三区偷拍| 亚洲日本电影在线| 久久亚洲欧美国产精品乐播| 伊人春色精品| 麻豆国产va免费精品高清在线| 欧美一区二区三区另类| 国产一区二区无遮挡| 久久久久**毛片大全| 欧美一级视频精品观看| 国产综合第一页| 免费久久99精品国产自| 午夜精品一区二区三区在线视| 亚洲精选在线| 欧美日韩视频| 亚洲第一福利社区| 欧美国产日韩一区二区| 欧美 亚欧 日韩视频在线| 亚洲日本在线观看| 亚洲精品自在久久| 欧美视频在线不卡| 欧美在线日韩在线| 久久性天堂网| 亚洲视频在线观看免费| 亚洲欧美另类在线| 在线免费一区三区| 亚洲裸体视频| 国产精品夜夜嗨| 久久久久久综合| 欧美xxx成人| 亚洲尤物在线视频观看| 欧美一区1区三区3区公司| 亚洲欧洲视频在线| 亚洲午夜激情| 亚洲福利视频一区| 中文有码久久| 亚洲国产精品久久久久秋霞不卡| 亚洲人成小说网站色在线| 国产精品v片在线观看不卡| 久久久欧美精品| 欧美精品在线观看播放| 久久成人18免费网站| 免费成人你懂的| 欧美淫片网站| 欧美精品日韩| 蜜桃精品久久久久久久免费影院| 国产精品h在线观看| 欧美99久久| 国产欧美在线播放| aa亚洲婷婷| 亚洲国产精品成人综合| 亚洲欧美综合v| 宅男在线国产精品| 久久亚洲一区二区三区四区| 亚洲综合首页| 欧美国产日本高清在线| 久久久午夜电影| 国产精品社区| 一区二区三区四区国产| 亚洲黄色片网站| 久久国产欧美精品| 午夜电影亚洲| 欧美日韩视频在线| 亚洲激情影院| 亚洲国产精品99久久久久久久久| 亚洲综合精品四区| 亚洲一区二区三区中文字幕在线| 欧美bbbxxxxx| 免费成人高清在线视频| 国产一区二区三区在线免费观看| 亚洲一区二区三区涩| 一区二区三区视频免费在线观看| 免费欧美网站| 亚洲国产高清在线| 亚洲激情六月丁香| 蜜桃av噜噜一区| 欧美成人精品福利| 亚洲成色777777在线观看影院| 欧美一级电影久久| 亚洲第一在线视频| 亚洲国产成人在线视频| 亚洲第一二三四五区| 久久不射2019中文字幕| 久久国产免费| 国产一区二区电影在线观看| 午夜精品一区二区三区在线播放 | 国产亚洲一区二区精品| 亚洲在线成人精品| 校园春色国产精品| 国产欧美一区二区三区在线看蜜臀| 亚洲欧美视频在线| 久久久精品动漫| 精品1区2区3区4区| 免费观看一级特黄欧美大片| 欧美激情一区二区三区蜜桃视频| 91久久精品久久国产性色也91| 男人的天堂成人在线| 91久久午夜| 亚洲一区二区av电影| 国产精品毛片| 久久国产高清| 亚洲第一色中文字幕| 夜夜躁日日躁狠狠久久88av| 国产精品久久看| 欧美一区三区二区在线观看| 毛片av中文字幕一区二区| 亚洲国产合集| 国产精品成人免费| 性欧美18~19sex高清播放| 久久一区二区三区四区| 亚洲福利视频一区| 国产精品成人观看视频免费| 欧美中在线观看| 亚洲日本欧美日韩高观看| 亚洲自拍三区| 黄色成人av网站| 欧美日韩精品在线播放| 午夜精品国产| 亚洲国产成人在线播放| 欧美一区亚洲二区| 亚洲精品免费在线播放| 国产精品亚洲综合久久| 欧美成人黄色小视频| 亚洲尤物精选| 亚洲黄色一区| 久久综合中文色婷婷| 亚洲少妇中出一区| 亚洲第一中文字幕在线观看| 欧美香蕉视频| 欧美14一18处毛片| 午夜在线a亚洲v天堂网2018| 亚洲高清不卡| 久久久噜久噜久久综合| 一区二区三区四区精品| 亚洲电影免费在线观看| 国产精品入口| 欧美日韩成人在线| 久久久99国产精品免费| 亚洲午夜视频| 亚洲精选一区二区| 欧美激情偷拍| 久久夜色精品国产欧美乱极品| 在线一区二区三区四区| 亚洲黄色小视频| 国产综合一区二区| 国产精品入口尤物| 欧美日韩午夜剧场| 欧美电影在线| 另类酷文…触手系列精品集v1小说| 久久精品123| 国产精一区二区三区| 欧美激情va永久在线播放| 久久精品中文字幕一区| 亚洲欧美日韩成人高清在线一区| 亚洲激情在线激情| 美女日韩欧美| 久久亚洲国产精品日日av夜夜| 亚洲欧美日韩精品一区二区| 99国产精品视频免费观看| 亚洲国产清纯| 亚洲国产91精品在线观看| 黄色一区二区三区四区| 国产一区二区三区免费不卡 | 香蕉久久精品日日躁夜夜躁| 亚洲免费成人av| 亚洲欧洲免费视频| 亚洲精品1区2区| 亚洲激情啪啪| 亚洲精品久久视频| 99精品国产99久久久久久福利| 亚洲精品美女在线观看| 日韩视频―中文字幕| 日韩一区二区福利| 99视频精品在线| 一区二区三区你懂的| 一本一本大道香蕉久在线精品| 国产精品99久久99久久久二8 | 国产欧美精品日韩精品| 国产欧美日韩视频一区二区三区| 国产精品网红福利| 国产精品日韩精品欧美精品| 国产欧美韩国高清| 激情久久影院| 亚洲经典三级| 日韩一二三在线视频播| 亚洲视频一区二区在线观看| 亚洲视频在线观看| 久久国产乱子精品免费女| 免费在线亚洲欧美| 91久久精品一区二区别|