在Linux系统上,信号-KILLTERM发送一个允许应用程序安全关闭的信号。这些问题可能有点理论性,但我想了解它们。杀死-SIGTERM和KILLSIG:安全终止应用程序
当系统发送终止信号时,它发送到哪里?
允许过程或应用程序“安全”终止的时间是什么?
是否有一个子进程或类似的东西,在查找此信号的应用程序的后台运行?
这些问题从Linux看门狗干,在阅读手册页,我看到看门狗的过程是首先发送一个终止信号给定PID,然后使用kill -9信号给力了。我希望能够利用监视器内置的安全性。
在Linux系统上,信号-KILLTERM发送一个允许应用程序安全关闭的信号。这些问题可能有点理论性,但我想了解它们。杀死-SIGTERM和KILLSIG:安全终止应用程序
当系统发送终止信号时,它发送到哪里?
允许过程或应用程序“安全”终止的时间是什么?
是否有一个子进程或类似的东西,在查找此信号的应用程序的后台运行?
这些问题从Linux看门狗干,在阅读手册页,我看到看门狗的过程是首先发送一个终止信号给定PID,然后使用kill -9信号给力了。我希望能够利用监视器内置的安全性。
看到这个代码,
#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您正在运行的程序的进程ID。
信号不杀人进程,人(和他们的进程)发送信号杀死进程。 – joop
TERM信号可以被进程的信号处理程序捕获; KILL不能。因此,看门狗首先尝试发送SIGTERM并等待一段时间,因此任何使用自定义SIGTERM处理程序的进程都有时间执行它。 “安全”终止是由设计人员构建到应用程序中的东西。 –