我想检测我的程序的终止信号,以便在离开我的程序之前执行一些 C 指令。我的程序在 linux 上运行
有可能这样做吗?如果是,我该怎么做?
您可以使用 注册信号处理程序sigaction()
。请注意,您无法处理SIGKILL
或SIGSTOP
虽然。
不,SIGKILL不能处理,也许你想抓CTRL+C,那么:
#include <stdio.h>
#include <signal.h>
volatile sig_atomic_t stop;
void
inthand(int signum)
{
stop = 1;
}
int
main(int argc, char **argv)
{
signal(SIGINT, inthand);
while (!stop)
printf("a");
printf("exiting safely\n");
return 0;
}
会成功的
如果将 SIGKILL 或 SIGTERM 发送到您的进程,则您无法屏蔽或忽略该信号。您可以处理和屏蔽它的其他信号。