浅析Linux下常见信号(Signal)

终端输入man 7 signal查看手册
浅析Linux下常见信号(Signal)
浅析Linux下常见信号(Signal)

第一列(Signal)为信号名称

第二列(Value)为信号对应的值(实际上就是个宏定义),有多个值是因为该信号量在不同平台下的值不同(如ARM/x86),其中第二个值对应x86平台。

第三列(Action)为进程接收到信号后的默认行为,其中:
Term = Terminate,进程终结
Core = Core dump,进程终结并保存进程退出信息以供调试
Ign = Ignore,忽略信号
Stop,进程挂起/暂停
Cont = Continue,**挂起的进程

SIGHUP
Signal Hung Up
当一个会话(Session)终止时(通常是关闭一个终端),该会话中所有进程将收到SIGHUP信号。
浅析Linux下常见信号(Signal)
如果进程中对SIGHUP进行处理,即使关闭终端也不会终止进程。

SIGINT
Signal Terminate
当我们在终端中输入Ctrl+C时,前台进程便会收到此信号

SIGQUIT
Signal Quit
比起SIGINT多了一个核心转储,在终端以Ctrl+\输入

SIGILL
Signal illegal
执行了非法指令。通常是因为可执行文件本身出现段错误,堆栈溢出。

SIGABRT
Signal Abort
执行abort()函数时发出的信号

SIGKILL
Signal Kill
立即终止指定进程,该信号无法被捕获或忽略

SIGPIPE
Signal Pipe
向无读者的管道写入数据时触发的信号,在网络编程中需注意处理

SIGTERM
Signal Terminate
程序结束信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。

SIGCHLD
Signal Child
子进程退出时父进程收到的信号,若父进程不用wait()对子进程退出信息进行处理,子进程将成为僵死进程占用进程表。

SIGSTOP
Signal Stop
停止(stopped)进程的执行。注意它和terminate以及interrupt的区别:该进程还未结束, 只是暂停执行。不能被阻塞或忽略。

** SIGTSTP**
停止进程的运行, 但该信号可以被捕获和忽略。 在终端输入Ctrl+Z时发出这个信号。

SIGCONT
Signal Continue
让一个停止(stopped)的进程继续执行。不可被捕获或忽略。