如何正确处理C中的信号

时间:2016-11-24 23:17:36

标签: c signals handler sigint

我在C中的程序非常简单,让我在互联网上应对它:

#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
void sigint_handler(int dummy)
{
    printf("SIGINT HANDLED!\n");
    signal(SIGINT,sigint_handler);
}

int main(){
    signal(SIGINT,sigint_handler);

    kill(getpid(),SIGINT);
    sleep(1);

    return 0;
}

我的问题是,这条线做了什么?

signal(SIGINT,sigint_handler);

甚至有必要吗?没有这一行,这个程序就可以正常运行,没有任何变化。

1 个答案:

答案 0 :(得分:0)

signal(SIGINT,sigint_handler);告诉计算机下次程序收到SIGINT时调用sigint_handler