我想在处理停止/终止信号之前调用一个函数。
是否有捷径可寻?
您可以通过设置信号处理程序来处理SIGTERM
和SIGINT
信号(请参阅参考资料signal(3)
),但是您不能处理 SIGKILL
,这就是为什么它应作为对程序使用的最后手段。
如果您总是想在流程退出之前做点什么,请参阅atexit(3)
。
$ cat sig.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
static void closedown() {
printf("running closedown\n");
}
static void sighandler(int signal) {
exit(1);
}
int main(int argc, const char **argv) {
signal(SIGTERM, sighandler);
signal(SIGINT, sighandler);
atexit(closedown);
while (1) {
sleep(1);
printf("tick\n");
}
return 0;
}
$ clang -o sig sig.c
$ ./sig
tick
tick
^Crunning closedown
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句