Kill -SIGTERM和KILLSIG:安全终止应用程序

时间:2015-11-03 15:10:39

标签: c linux

在Linux系统上,信号-KILLTERM发送一个允许应用程序安全关闭的信号。这些问题可能有点理论化,但我想了解它们。

  1. 当系统发送终止信号时,它在哪里发送?

  2. 什么时间允许流程或应用程序安全地“#”;终止

  3. 是否存在在查找此信号的应用程序后台运行的子进程或类似内容?

  4. 这些问题源于Linux看门狗,在阅读手册页时,我看到看门狗的过程是首先向给定的PID发送终止信号,然后发送KILL -9信号强制它。我希望能够利用看门狗内置的安全性。

1 个答案:

答案 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。