Linux C++應用程式退出時的事件響應
阿新 • • 發佈:2018-12-17
#define SIGHUP 1 /* hangup */ SIGHUP是Unix系統管理員很常用的一個訊號。許多後臺服務程序在接受到該訊號後將會重新讀取它們的配置檔案。然而,該訊號的實際功能是通知程序它的控制終端被斷開。預設行為是終止程序。
#define SIGINT 2 /* interrupt */ 對於Unix使用者來說,SIGINT是另外一個常用的訊號。許多shell的CTRL-C組合使得這個訊號被大家所熟知。該訊號的正式名字是中斷訊號。預設行為是終止程序。
#define SIGQUIT 3 /* quit */
SIGQUIT訊號被用於接收shell的CTRL-/組合。另外,它還用於告知程序退出。這是一個常用訊號,用來通知應用程式從容的(譯註:即在結束前執行一些退出動作)關閉。預設行為是終止程序,並且建立一個核心轉儲。
#define SIGTERM 15 /* software termination signal from kill */
SIGTERM訊號被髮送給程序,通知該程序是時候終止了,並且在終止之前做一些清理活動。SIGTERM訊號是Unix的kill命令傳送的預設訊號,同時也是作業系統關閉時向程序傳送的預設訊號。預設行為是終止程序。
程式碼為:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <signal.h> void sigroutine(int dunno) { switch (dunno) { case 1: printf("SIGHUP "); exit(0); break; case 2: printf("SIGINT "); exit(0); break; case 3: printf("SIGQUIT "); exit(0); break; case 15: printf("SIGTERM "); exit(0); break; } return; } int main(void) { signal(SIGHUP, sigroutine); signal(SIGINT, sigroutine); signal(SIGQUIT, sigroutine); signal(SIGTERM, sigroutine); while(true) { int a = 1 + 1; } return 0; }