2013-10-31 25 views

回答

4

您可以通過設置向上的信號處理(見signal(3))處理SIGTERMSIGINT信號,但是你不能手柄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 
+0

工程就像一個魅力。非常感謝! – frdmn

相關問題