考虑这段代码
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
void sig_handler(int signum)
{
printf("Received signal %d\n", signum);
}
int main()
{
signal(SIGINT, sig_handler);
signal(SIGTERM, sig_handler);
signal(SIGHUP, sig_handler);
signal(SIGQUIT, sig_handler);
signal(SIGABRT, sig_handler);
signal(SIGILL, sig_handler);
signal(SIGKILL, sig_handler);
signal(SIGFPE, sig_handler);
signal(SIGSEGV, sig_handler);
signal(SIGPIPE, sig_handler);
signal(SIGALRM, sig_handler);
signal(SIGCHLD, sig_handler);
signal(SIGUSR1, sig_handler);
signal(SIGUSR2, sig_handler);
signal(SIGSTOP, sig_handler);
sleep(10);
return 0;
}
它处理所有可能的信号。我们不能使用 killall program_name
终止这个程序。
是否可以在不重启计算机的情况下终止它,如何终止?
最佳答案
如评论中所述,答案是否定的,您无法构建这样的程序。标准 ( The Open Group Base Specifications Issue 7 ) 列出了这些不可忽略的信号:
- SIGKILL
- 信号停止
关于c - 是否可以终止不响应信号的程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185047/