我要处理来自C程序一个kill signal
。 我开始通过创建一个无限循环和处理的信号处理一个kill信号
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,杀的处理,和它的作品。信息Caught signal
已打印。 然而,当我试图从另一个程序
int main(int argc, char **argv)
{
kill(atoi(argv[1]), SIGKILL);
return 0;
}
该计划采空杀,但信号不被处理。换句话说,信息Caught signal
未被打印。无限循环刚刚停止。
变化'SIGKILL'到'SIGINT',它应该工作。这是非常有意义的,不可能抓住'SIGKILL'。 – zwol
SIGKILL也是不得已而为之 –
这'杀(的atoi(argv的[1]),...'是危险求代码... *不寒而栗* – alk