文章链接:https://codemouse.online/archives/2020-03-16181245
查看支持的信号列表
-
运行如下命令:
codemouse@codemouse:~$ kill -l 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
可靠信号与不可靠信号
-
不可靠信号(非实时的)
列表中,编号为1 ~ 31的信号为传统UNIX支持的信号。 -
可靠信号(实时信号)
编号为32 ~ 63的信号是后来扩充的。 -
区别:
不可靠信号和可靠信号的区别在于前者不支持排队,可能会造成信号丢失,而后者不会。
信号功能(小于SIGRTMIN的信号)
-
SIGHUP
控制台挂起或者控制台死亡时发出信号.
不过wget是一个例外,它能捕获SIGHUP信号,关掉控制端wget也能继续下载。 -
SIGINT
程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl-C)时发出.
-
SIGQUIT
和SIGINT类似, 但由QUIT字符(通常是Ctrl-\)来控制.
-
SIGILL
执行了非法指令.
-
SIGTRAP
由断点指令或其它trap指令产生. 由debugger使用。
-
SIGABRT
调用abort函数生成的信号。
-
SIGBUS
访问了非法地址,指针所对应的地址是有效地址,但总线不能正常使用该指针。通常是未对齐的数据访问所致。
-
SIGFPE
浮点错误。例如除零错误。
-
SIGKILL
用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。
-
SIGUSR1
留给用户使用
-
SIGSEGV
无效的内存引用,指针所对应的地址是无效地址,没有物理内存对应该地址。
-
SIGUSR2
留给用户使用
-
SIGPIPE
管道破裂。往管道写,没有读的一端。
-
SIGALRM
时钟定时信号。使用的是实际时间。
-
SIGTERM
终止信号, 与SIGKILL不同的是该信号可以被阻塞和处理。kill命令默认使用该信号。
-
SIGCHLD
子进程已停止或终止时,出现该信号提醒父进程。(父进程先终止,这时子进程的终止自动由init进程来接管)。
-
SIGCONT
如果停止则继续。例如ctrl+z后,程序停止,使用fg命令使进程继续。
-
SIGSTOP
停止(stopped)进程的执行,不可捕获。 程序未死亡,可以继续。
-
SIGTSTP
停止进程的运行, 该信号可以被处理和忽略. Ctrl-Z发出这个信号
-
SIGTTIN
后台处理终端输入(Terminal input for background process)。
-
SIGTTOU
后台处理终端输出(Terminal output for background process)。
-
SIGURG
有"紧急"数据到达socket时产生.
-
SIGXCPU
超过CPU时间资源限制. 这个限制可以由getrlimit/setrlimit来读取/改变。
-
SIGXFSZ
超过文件大小资源限制。
-
SIGVTALRM
虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间.
-
SIGPROF
类似于SIGALRM/SIGVTALRM, 但包括该进程用的CPU时间以及系统调用的时间.
-
SIGWINCH
窗口大小改变。
-
SIGIO
文件描述符准备就绪。(I/O now possible)
-
SIGPWR
Power failure
-
SIGSYS
程序的错误参数,非法的系统调用。
查看官方文档
codemouse@codemouse:~$ man 7 signal
信号分类
-
程序不可捕获、阻塞或忽略的信号有:
SIGKILL,SIGSTOP
-
不能恢复至默认动作的信号有:
SIGILL,SIGTRAP
-
默认会导致进程流产的信号有:
SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT
SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ -
默认会导致进程退出的信号有:
SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE
SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1
SIGUSR2,SIGVTALRM -
默认会导致进程停止的信号有:
SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU
-
默认进程忽略的信号有:
SIGCHLD,SIGPWR,SIGURG,SIGWINCH