Linux C++应用程序退出时的事件响应

xiaoxiao2025-08-05  33

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

 

转载请注明原文地址: https://www.6miu.com/read-5034319.html

最新回复(0)