我试图制作一个可以在CTRL + C之后继续运行的C程序。
我写了这个:
#include <stdlib.h>
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void acceptCommands();
void sighandle_int(int sign)
{
//system("^C;./a.out"); *out:* ^Csh: ^C: command not found
//如何在这里保护应用程序免于被杀?
}
int main(int argc, char **argv)
{
signal(SIGINT, sighandle_int);
acceptCommands();
return 0;
}
我该怎么办? 谢谢
答案 0 :(得分:0)
我正在尝试制作一个可以在CTRL + C之后继续运行的C程序。 ?当进程收到CTRL + C时,你使用sigaction()
设置处理程序,在那个处理程序中你可以指定是继续还是忽略或者你想要什么。
可能你想要这样
void sighandle_int(int sign) {
/*when process receives SIGINT this isr will be called,
here you can specify whether you want to continue or ignore,
by signal handler again */
signal(SIGINT,SIG_IGN);
//or
signal(SIGINT,sighandle_int);
}
同时使用sigaction()
代替signal()
,如What is the difference between sigaction and signal?