簡體   English   中英

信號系統呼叫

[英]Signal system call

我有這個代碼片段,甚至我讀過幾次信號系統調用,但我仍然不明白為什么為什么我第四次按CTRL-C而不是第三次停止該程序。 提前致謝!

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

int i=0;

void handler(int sig)
{
    i++;
    printf("CTRL-C\n");
    if (i==3)
        signal(SIGINT, SIG_DFL);
}

int main()
{
    signal(SIGINT,handler);
    while (1)
    {
        printf("Hello world!\n");
        sleep(1);
    }

    return 0;
}

我讀到信號系統調用不是可移植的,所以如果我提到我正在使用最新版本的Ubuntu(14.04),這可能會有所幫助。

您的自定義處理程序被調用了三次。 第三次,它注冊一個新的信號處理程序(即默認信號處理程序),該處理程序在下一次發送信號時終止程序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM