使用SIGINT后恢复CTRL + C的默认行为

时间:2018-06-08 20:59:57

标签: c linux signals

我需要编写一个函数,在按CTRL + \后恢复CTRL + C(终止进程)的默认行为 这是我的计划:

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

void sig_int(int sig)
{

    printf("U PRESSED CTRL+C\n");
}
void sig_quit(int sig){
            printf("CTRL+C NOW DO ITS KILLING JOB\n");

}
int main(int argc, char** argv) 
{
    signal(SIGINT,sig_int);
    signal(SIGQUIT, sig_quit);

    return 0;
}

感谢您提供所有帮助和说明以便更好地理解:)

2 个答案:

答案 0 :(得分:1)

取自我机器上的手册页:

  

要设置上面列出的信号的默认操作,func应该是SIG_DFL。

所以signal(SIQUIT, SIG_DFL)如果我正确理解了您的问题。

答案 1 :(得分:1)

signal返回先前配置的处理程序,将其存储在某处,然后使用signal随时恢复它。 SIG_DFL也指向C运行时的默认处理程序,但这并不总是正确使用。