1. 程式人生 > >Linux C++應用程式退出時的事件響應

Linux C++應用程式退出時的事件響應

#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;
}