<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創未來!
    隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
    數據加載中……

    signal process

    信號學習:
    1。簡單點用signal(主要就1個api,signal(SIGINT, SignalHandler)和signal(SIGINT, SIG_IGN)就是全部了);
    2。復雜點用sigaction(可以設置在handling期間,允許/不允許哪些信號打斷自己);
    3。當前線程handling過程中,當前線程不會因為相同signal再次進入handler,但當前線程可以被別的signal打斷重新進入handler,別的線程可以進入handler;
    例如下面這個例子,只有一個主線程,先被SIGINT打斷進入handler,雖然又被SIGTERM打斷再次進入handler:
    #0  0x00007f7cc55dc200 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82
    #1  0x00007f7cc55dc090 in __sleep (seconds=<value optimized out>) at ../sysdeps/unix/sysv/linux/sleep.c:138
    #2  0x0000000000468300 in SignalHandler (sig=15) at src/dispatcher2_server.cpp:78
    #3  <signal handler called>
    #4  0x00007f7cc55dc200 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82
    #5  0x00007f7cc55dc090 in __sleep (seconds=<value optimized out>) at ../sysdeps/unix/sysv/linux/sleep.c:138
    #6  0x0000000000468300 in SignalHandler (sig=2) at src/dispatcher2_server.cpp:78
    #7  <signal handler called>
    #8  0x00007f7cc55dc200 in __nanosleep_nocancel () at ../sysdeps/unix/syscall-template.S:82
    #9  0x00007f7cc55dc090 in __sleep (seconds=<value optimized out>) at ../sysdeps/unix/sysv/linux/sleep.c:138
    #10 0x000000000046844a in main (argc=1, argv=0x7fff048454a8) at src/dispatcher2_server.cpp:102
    demo:
    static void SignalHandler(int sig) {
        if (SIGTERM == sig || SIGINT == sig) {
            struct sigaction sa;
            memset(&sa, 0, sizeof(sa));
            sa.sa_handler = SIG_IGN;
            sigaction(SIGINT, &sa, NULL); // keep other threads from entering this handler
            sigaction(SIGTERM, &sa, NULL); // keep other threads from entering this handler
            
            //...
        }
    }
    struct sigaction sa;
    memset(&sa, 0, sizeof(sa));
    sa.sa_handler = SignalHandler;
    sigfillset(&sa.sa_mask); // block every signal during handling
    sigaction(SIGINT, &sa, NULL);
    sigaction(SIGTERM, &sa, NULL);


    介紹:http://www.alexonlinux.com/signal-handling-in-linux
    demo:http://aspyct.org/blog/2012/08/25/unix-signal-handling-example/


    posted on 2016-02-17 11:30 so true 閱讀(391) 評論(0)  編輯  收藏 所屬分類: C&C++Linux

    主站蜘蛛池模板: 95免费观看体验区视频| 亚洲精品蜜桃久久久久久| 精品国产免费一区二区三区| 国产av天堂亚洲国产av天堂| 一本岛高清v不卡免费一三区| 色噜噜噜噜亚洲第一| 国产av天堂亚洲国产av天堂| 日本免费电影一区| 可以免费看的卡一卡二| 久爱免费观看在线网站 | 国产免费黄色无码视频| 亚洲中文字幕乱码一区| 久久青青草原亚洲av无码app| 亚洲国产精品狼友中文久久久 | 亚洲天堂中文字幕在线| 免费国产成人午夜电影| 毛片高清视频在线看免费观看| 久久久久国产精品免费免费不卡| 亚洲av日韩综合一区久热| 亚洲色一区二区三区四区| 亚洲91精品麻豆国产系列在线| 亚洲综合无码一区二区三区| 亚洲爆乳无码一区二区三区| 国产成人综合亚洲AV第一页| 国产亚洲美日韩AV中文字幕无码成人| 波多野结衣一区二区免费视频| 国产男女猛烈无遮挡免费网站| 国产成人青青热久免费精品| 国产裸模视频免费区无码| 免费观看午夜在线欧差毛片| 国产亚洲精品成人AA片新蒲金| 亚洲日产韩国一二三四区| 亚洲va无码手机在线电影| 亚洲另类小说图片| 亚洲avav天堂av在线网毛片| 四虎成人精品国产永久免费无码| 久久青草91免费观看| 国产美女精品久久久久久久免费| 亚洲日韩在线观看免费视频| 亚洲91av视频| 免费人成网站永久|