当前位置:   article > 正文

Linux signal小结_linux信号列表

linux信号列表

1、信号列表

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         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

首先列出的是POSIX.1中列出的信号:

SIGHUP 1 A 终端挂起或者控制进程终止 
SIGINT 2 A 键盘中断(如ctrl+c键被按下) 
SIGQUIT 3 C 键盘的退出键被按下 
SIGILL 4 C 非法指令 
SIGABRT 6 C 由abort(3)发出的退出指令 
SIGFPE 8 C 浮点异常 
SIGKILL 9 AEF Kill信号 
SIGSEGV 11 C 无效的内存引用 
SIGPIPE 13 A 管道破裂: 写一个没有读端口的管道 
SIGALRM 14 A 由alarm(2)发出的信号 
SIGTERM 15 A 终止信号 ,kill或killall通知程序
SIGUSR1 30,10,16 A 用户自定义信号1 
SIGUSR2 31,12,17 A 用户自定义信号2 
SIGCHLD 20,17,18 B 子进程结束信号 
SIGCONT 19,18,25 进程继续(曾被停止的进程) 
SIGSTOP 17,19,23 DEF 终止进程 
SIGTSTP 18,20,24 D 控制终端(tty)上按下停止键 
SIGTTIN 21,21,26 D 后台进程企图从控制终端读 
SIGTTOU 22,22,27 D 后台进程企图从控制终端写 

下面的信号没在POSIX.1中列出,而在SUSv2列出

SIGBUS 10,7,10 C 总线错误(错误的内存访问) 
SIGPOLL A Sys V定义的Pollable事件,与SIGIO同义 
SIGPROF 27,27,29 A Profiling定时器到 
SIGSYS 12,-,12 C 无效的系统调用 (SVID) 
SIGTRAP 5 C 跟踪/断点捕获 
SIGURG 16,23,21 B Socket出现紧急条件(4.2 BSD) 
SIGVTALRM 26,26,28 A 实际时间报警时钟信号(4.2 BSD) 
SIGXCPU 24,24,30 C 超出设定的CPU时间限制(4.2 BSD) 
SIGXFSZ 25,25,31 C 超出设定的文件大小限制(4.2 BSD) 

(对于SIGSYS,SIGXCPU,SIGXFSZ,以及某些机器体系结构下的SIGBUS,Linux缺省的动作是A (terminate),SUSv2 是C (terminate and dump core))

下面是其它的一些信号 

SIGIOT 6 C IO捕获指令,与SIGABRT同义 
SIGEMT 7,-,7 
SIGSTKFLT -,16,- A 协处理器堆栈错误 
SIGIO 23,29,22 A 某I/O操作现在可以进行了(4.2 BSD) 
SIGCLD -,-,18 A 与SIGCHLD同义 
SIGPWR 29,30,19 A 电源故障(System V) 
SIGINFO 29,-,- A 与SIGPWR同义 
SIGLOST -,-,- A 文件锁丢失 
SIGWINCH 28,28,20 B 窗口大小改变(4.3 BSD, Sun) 
SIGUNUSED -,31,- A 未使用的信号(will be SIGSYS) 

(在这里,- 表示信号没有实现;有三个值给出的含义为,第一个值通常在Alpha和Sparc上有效,中间的值对应i386和ppc以及sh,最后一个值对应mips。信号29在Alpha上为SIGINFO / SIGPWR ,在Sparc上为SIGLOST。) 

处理动作一项中的字母含义如下 
A 缺省的动作是终止进程 
B 缺省的动作是忽略此信号 
C 缺省的动作是终止进程并进行内核映像转储(dump core) 
D 缺省的动作是停止进程 
E 信号不能被捕获 
F 信号不能被忽略 

2、signal库函数
signal库函数可以设置程序对信号的处理方式。
包含头文件:
#include <signal.h>
函数声明
sighandler t signal(int signum, sighandler t handler),
参数signum表示信号的编号
参数handler表示信号的处理方式,有三种情况
1)SIG IGN:忽略参数signum所指的信号,
2)一个自定义的处理信号的函数,信号的编号为这个自定义函数的参数。
3)SIG DFL:恢复参数signum所指信号的处理方法为默认值。
程序员不关心signal的返回值。

3、Signal信号的含义

SignalDescription
SIGABRT-6由调用abort函数产生,进程非正常退出
SIGALRM-14用alarm函数设置的timer超时或setitimer函数设置的interval timer超时
SIGBUS-7某种特定的硬件异常,通常由内存访问引起
SIGCANCEL由Solaris Thread Library内部使用,通常不会使用
SIGCHLD-17进程Terminate或Stop的时候,SIGCHLD会发送给它的父进程。缺省情况下该Signal会被忽略
SIGCONT-18当被stop的进程恢复运行的时候,自动发送
SIGEMT和实现相关的硬件异常
SIGFPE-8数学相关的异常,如被0除,浮点溢出,等等
SIGFREEZESolaris专用,Hiberate或者Suspended时候发送
SIGHUP-1

发送给具有Terminal的Controlling Process,当terminal被disconnect时候发送

终端挂起或者控制进程终止

SIGILL-4非法指令异常
SIGINFOBSD signal。由Status Key产生,通常是CTRL+T。发送给所有Foreground Group的进程
SIGINT-2由Interrupt Key产生,通常是CTRL+C或者DELETE。发送给所有ForeGround Group的进程
SIGIO-29异步IO事件
SIGIOT实现相关的硬件异常,一般对应SIGABRT
SIGKILL-9无法处理和忽略。中止某个进程
SIGLWP由Solaris Thread Libray内部使用
SIGPIPE-13在reader中止之后写Pipe的时候发送
SIGPOLL当某个事件发送给Pollable Device的时候发送
SIGPROF-27Setitimer指定的Profiling Interval Timer所产生
SIGPWR-30和系统相关。和UPS相关。
SIGQUIT-3输入Quit Key的时候(CTRL+\)发送给所有Foreground Group的进程
SIGSEGV-11非法内存访问
SIGSTKFLT-16Linux专用,数学协处理器的栈异常
SIGSTOP-19中止进程。无法处理和忽略。
SIGSYS-31非法系统调用
SIGTERM-15请求中止进程,kill命令缺省发送
SIGTHAWSolaris专用,从Suspend恢复时候发送
SIGTRAP-5实现相关的硬件异常。一般是调试异常
SIGTSTP-20Suspend Key,一般是Ctrl+Z。发送给所有Foreground Group的进程
SIGTTIN-21当Background Group的进程尝试读取Terminal的时候发送
SIGTTOU-22当Background Group的进程尝试写Terminal的时候发送
SIGURG-23当out-of-band data接收的时候可能发送
SIGUSR1-10用户自定义signal 1
SIGUSR2-12用户自定义signal 2
SIGVTALRM-26setitimer函数设置的Virtual Interval Timer超时的时候
SIGWAITINGSolaris Thread Library内部实现专用
SIGWINCH-28当Terminal的窗口大小改变的时候,发送给Foreground Group的所有进程
SIGXCPU-24当CPU时间限制超时的时候
SIGXFSZ-25进程超过文件大小限制
SIGXRESSolaris专用,进程超过资源限制的时候发送
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/460144
推荐阅读
相关标签
  

闽ICP备14008679号