<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

    主站蜘蛛池模板: 亚洲精品福利在线观看| 亚洲国产主播精品极品网红| 亚洲国产精品无码久久久蜜芽| 久久久久亚洲国产AV麻豆| 日本免费一二区在线电影| 色噜噜亚洲男人的天堂| 亚洲欧洲免费无码| 亚洲人成网亚洲欧洲无码| 日韩电影免费在线| 男女啪啪免费体验区| 免费国产成人午夜电影| 国产亚洲精品2021自在线| 亚洲日韩涩涩成人午夜私人影院| 一级看片免费视频| 久热综合在线亚洲精品| 国产精品久久免费| 亚洲大码熟女在线观看| 亚洲精品久久久www| 中文字幕日本人妻久久久免费| 久久亚洲精品无码AV红樱桃| 114一级毛片免费| 亚洲国产成人久久一区二区三区| 亚洲精品偷拍视频免费观看| 成人性生交大片免费看好| 久久狠狠高潮亚洲精品| 最近中文字幕mv免费高清电影 | 欧洲乱码伦视频免费国产| 亚洲日韩乱码中文无码蜜桃臀网站| 免费女人高潮流视频在线观看| 亚洲中文字幕乱码熟女在线| 亚洲国产成人VA在线观看| 久久99国产综合精品免费| 色欲aⅴ亚洲情无码AV蜜桃| 亚洲大成色www永久网站| 99视频在线精品免费观看6| 一级女性全黄久久生活片免费| 亚洲欧洲日产v特级毛片| 四虎影视永久免费观看网址| 久久久久国产精品免费看| 亚洲国产精品ⅴa在线观看| 亚洲国产精彩中文乱码AV|