信号处理 - 信号类型

优质
小牛编辑
131浏览
2023-12-01

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

编号信号编号信号编号信号
1SIGHUP2SIGINT3SIGQUIT
4SIGILL5SIGTRAP6SIGABRT
7SIGBUS8SIGFPE9SIGKILL
10SIGUSR111SIGSEGV12SIGUSR2
13SIGPIPE14SIGALRM15SIGTERM
16SIGSTKFLT17SIGCHLD18SIGCONT
19SIGSTOP20SIGTSTP21SIGTTIN
22SIGTTOU23SIGURG24SIGXCPU
25SIGXFSZ26SIGVTALRM27SIGPROF
28SIGWINCH29SIGIO30SIGPWR
31SIGSYS

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

分类

程序错误类信号

程序终止类信号

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

闹钟类信号

IO类信号

作业控制类信号

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

操作错误类信号

其他信号

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

附录

编号信号编号信号编号信号
34SIGRTMIN35SIGRTMIN+136SIGRTMIN+2
37SIGRTMIN+338SIGRTMIN+439SIGRTMIN+5
40SIGRTMIN+641SIGRTMIN+742SIGRTMIN+8
43SIGRTMIN+944SIGRTMIN+1045SIGRTMIN+11
46SIGRTMIN+1247SIGRTMIN+1348SIGRTMIN+14
49SIGRTMIN+1550SIGRTMAX-1451SIGRTMAX-13
52SIGRTMAX-1253SIGRTMAX-1154SIGRTMAX-10
55SIGRTMAX-956SIGRTMAX-857SIGRTMAX-7
58SIGRTMAX-659SIGRTMAX-560SIGRTMAX-4
61SIGRTMAX-362SIGRTMAX-263SIGRTMAX-1
64SIGRTMAX

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