Gab*_*yer 164
signal不是最可靠的方式,因为它在实现上有所不同.我建议使用sigaction.Tom的代码现在看起来像这样:
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
void my_handler(int s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = my_handler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
pause();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*Tom 34
你必须捕获SIGINT 信号(我们正在谈论POSIX吗?)
请参阅@Gab Royer对sigaction的回答.
例:
#include <signal.h>
#include <stdlib.h>
#include <stdio.h>
void my_handler(sig_t s){
printf("Caught signal %d\n",s);
exit(1);
}
int main(int argc,char** argv)
{
signal (SIGINT,my_handler);
while(1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)