我想处理来自 C 程序的 kill signal
。
我首先创建一个无限循环并处理信号
void signal_callback_handler(int signum)
{
printf("Caught signal %d\n",signum);
// Cleanup and close up stuff here
// Terminate program
exit(signum);
}
main()
{
signal(SIGINT, signal_callback_handler);
printf("pid: %d \n",getpid());
while(1)
{
}
}
当我运行这个程序并按 CTRL+C 时,kill 被处理,并且它起作用了。打印消息 Caught signal
。
但是,当我试图从另一个程序中杀死时
int main(int argc, char **argv)
{
kill(atoi(argv[1]), SIGKILL);
return 0;
}
程序已停止但未处理信号。换句话说,不会打印消息 Caught signal
。无限循环刚刚停止。
最佳答案
就是这样:您无法捕捉到 SIGKILL
,它肯定会终止您的程序,这就是创建它的目的。
关于c - 处理终止信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43593286/