以下声明如何做?如果有人能解释这个功能,我会非常感激。
signal(SIGINT, SIG_DFL);
答案 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或程序员定义函数的地址。
答案 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);
它将再次更改信号的默认行为。 (即终止进程)