什么是信号功能(SIGINT)?

时间:2013-04-30 07:07:25

标签: c signals sigint

以下声明如何做?如果有人能解释这个功能,我会非常感激。

signal(SIGINT, SIG_DFL);

4 个答案:

答案 0 :(得分:3)

将SIGINT信号的处理设置为默认值。

如果您使用的是* nix系统,请尝试man signal获取此类答案。那(也许可以查看“另请参阅”下面列出的一些页面)也会告诉你什么是信号。

至于默认值是什么 - 它将是“忽略它”,“终止程序”或“导致程序转储核心”之一。它取决于具体的信号,我不记得SIGINT的默认值,抱歉。

答案 1 :(得分:1)

它设置SIGINT的默认操作,如下面的手册页所述;

来自Linux信号手册页;

sighandler_t signal(int signum, sighandler_t handler);

signal()函数将信号signum的处置设置为handler,它是SIG_IGN,SIG_DFL或程序员定义函数的地址。

  • 如果处置设置为SIG_IGN,则忽略该信号。
  • 如果处置设置为SIG_DFL,则会发生与信号关联的默认操作。

答案 2 :(得分:1)

您编写的行将中断信号的信号处理程序更改回默认值

void myInterruptHandler (int signum) { 
    printf("You pressed ctrl+c, but I don't care\n");
 }

int main(){
  sighandler_t oldHandler = signal(SIGINT, myInterruptHandler);
  while(true){
    printf("Ctrl + C can't kill me!!\n");
    sleep(1000);
  }
  //Change back to the old handler
  signal(SIGINT, oldHandler);
  //alternatively:  signal(SIGINT, SIG_DFL);
}

答案 3 :(得分:1)

SIGINT是中断信号(ctrl + C)。它的默认行为是终止进程。可以取消SIGINT信号,意味着可以更改默认行为(通过调用sighandler或将其设置为SIG_IGN) 现在,一旦操作发生变化,并且您想再次设置此信号的默认行为,则应编写

信号(SIGINT,SIG_DFL);

它将再次更改信号的默认行为。 (即终止进程)