<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

    主站蜘蛛池模板: 激情综合亚洲色婷婷五月APP| 亚洲欧洲精品无码AV| 亚洲国产片在线观看| 国产日韩一区二区三免费高清| 国产成人亚洲影院在线观看| 理论秋霞在线看免费| 亚洲日本在线观看视频| fc2成年免费共享视频18| 国产亚洲精品拍拍拍拍拍| 久久久久久噜噜精品免费直播| 亚洲伊人久久精品影院| 免费看成人AA片无码视频吃奶| 亚洲国产精品VA在线看黑人| 99视频免费播放| 亚洲最大黄色网站| 最近高清国语中文在线观看免费| 亚洲国产精品无码久久| 亚洲成a人在线看天堂无码| 一级一黄在线观看视频免费| 亚洲高清专区日韩精品| 最刺激黄a大片免费网站| 亚洲丝袜中文字幕| 国产乱人免费视频| 三年片免费观看大全国语| 久久亚洲精品无码aⅴ大香| 成年性午夜免费视频网站不卡| 色吊丝免费观看网站| 国产亚洲精品美女久久久 | 精品久久久久久国产免费了| 久久精品亚洲一区二区| a毛片基地免费全部视频| 日韩在线视频免费| 久久狠狠高潮亚洲精品 | 久久久久亚洲AV成人网| 四虎国产成人永久精品免费 | 亚洲伊人色一综合网| 免费国产综合视频在线看| 免费毛片a线观看| 亚洲欧美成人av在线观看| 亚洲情综合五月天| 免免费国产AAAAA片|