Linux常用31个信号(1~31)。signal.h中有个常量NSIG定义了信号的个数,其值通常为为64。

编号 信号 编号 信号 编号 信号
1 SIGHUP 2 SIGINT 3 SIGQUIT
4 SIGILL 5 SIGTRAP 6 SIGABRT
7 SIGBUS 8 SIGFPE 9 SIGKILL
10 SIGUSR1 11 SIGSEGV 12 SIGUSR2
13 SIGPIPE 14 SIGALRM 15 SIGTERM
16 SIGSTKFLT 17 SIGCHLD 18 SIGCONT
19 SIGSTOP 20 SIGTSTP 21 SIGTTIN
22 SIGTTOU 23 SIGURG 24 SIGXCPU
25 SIGXFSZ 26 SIGVTALRM 27 SIGPROF
28 SIGWINCH 29 SIGIO 30 SIGPWR
31 SIGSYS

这31个信号传统UNIX支持的信号,后来又扩充了一些信号(实时UNIX系统支持的信号)见附录

分类

程序错误类信号

程序终止类信号

  • SIGHUP
  • SIGINT(^C)中断。不产生core文件
  • SIGKILL
  • SIGQUIT(^)结束。会产生核心转储的core文件
  • SIGTERM

闹钟类信号

IO类信号

作业控制类信号

  • SIGCHLD:进程终止时,会向其父进程发送该信号。此信号默认动作是忽略。如果父进程想要在子进程状态发生改变时得到通知,就必须捕获此信号

操作错误类信号

其他信号

SIGUSR1和SIGUSR2这两个信号是专门留给用户应用程序自己定义使用的,默认动作是终止进程。

附录

编号 信号 编号 信号 编号 信号
34 SIGRTMIN 35 SIGRTMIN+1 36 SIGRTMIN+2
37 SIGRTMIN+3 38 SIGRTMIN+4 39 SIGRTMIN+5
40 SIGRTMIN+6 41 SIGRTMIN+7 42 SIGRTMIN+8
43 SIGRTMIN+9 44 SIGRTMIN+10 45 SIGRTMIN+11
46 SIGRTMIN+12 47 SIGRTMIN+13 48 SIGRTMIN+14
49 SIGRTMIN+15 50 SIGRTMAX-14 51 SIGRTMAX-13
52 SIGRTMAX-12 53 SIGRTMAX-11 54 SIGRTMAX-10
55 SIGRTMAX-9 56 SIGRTMAX-8 57 SIGRTMAX-7
58 SIGRTMAX-6 59 SIGRTMAX-5 60 SIGRTMAX-4
61 SIGRTMAX-3 62 SIGRTMAX-2 63 SIGRTMAX-1
64 SIGRTMAX

31和34之间是没有32和33的。前面31个信号1(1~31)是不可靠信号(非实时的),扩充的31个信号(34~64)称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会