我可以修改SIGKILL信号处理程序的代码吗?

时间:2014-09-12 02:04:44

标签: linux linux-kernel signals sigkill

我怎样才能修改SIGKILL信号处理程序的代码,以便重新定义SIGKILL的acitin?

2 个答案:

答案 0 :(得分:1)

你不能。
无法捕获,阻止或忽略信号SIGKILL和SIGSTOP。  阅读更多here

答案 1 :(得分:0)

您需要定义一个函数来处理异常发生的时间:

#include <stdio.h>
#include <execinfo.h>
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>

void ExceptionHandler(int sig)
{
    #define MAXSTACKSIZE (16)
    void *stackTraces[MAXSTACKSIZE];
    size_t size;

    // get void*'s for all entries on the stack
    size = backtrace(stackTraces, MAXSTACKSIZE);

    // do other stuffs of your own

    exit(1);
}

然后在主代码中注册该函数(您也可以注册其他类型的异常):

signal(SIGSEGV, ExceptionHandler);
signal(SIGTERM, ExceptionHandler);
signal(SIGINT, ExceptionHandler);
signal(SIGILL, ExceptionHandler);
signal(SIGABRT, ExceptionHandler);
signal(SIGFPE, ExceptionHandler);

希望有所帮助