在Linux系统上,信号-KILLTERM发送一个允许应用程序安全关闭的信号。这些问题可能有点理论化,但我想了解它们。
当系统发送终止信号时,它在哪里发送?
什么时间允许流程或应用程序安全地“#”;终止
是否存在在查找此信号的应用程序后台运行的子进程或类似内容?
这些问题源于Linux看门狗,在阅读手册页时,我看到看门狗的过程是首先向给定的PID发送终止信号,然后发送KILL -9信号强制它。我希望能够利用看门狗内置的安全性。
答案 0 :(得分:1)
请参阅此代码,
#include<stdio.h>
#include<signal.h>
#include<stdlib.h>
void cleanUp(){ // Do whatever you want here
printf("Safely terminating \n");
}
void hand(int sig){ // called when you are sent SIGTERM
/*
Here you can safely terminate..
*/
atexit(cleanUp); // call cleanUp at exit.
exit(0);
}
int main(){
signal(SIGTERM, hand); //Assign function to be called on SIGTERM
/*
Your code goes here.
I have put an infinite loop for demonstration.
*/
printf("Started execution..\n");
for(;;);
}
这显示了如何在将信号传递到应用程序时分配函数。
要将信号SIGTERM
发送到此代码,请执行此操作,
kill -SIGTERM <pid>
此处,<pid>
标识正在运行的程序的进程ID。