信号处理 - 信号类型
优质
小牛编辑
131浏览
2023-12-01
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)称做可靠信号(实时信号)。不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会