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