如需转载,请根据 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 许可,附上本文作者及链接。
本文作者: 陈进涛
作者昵称: 江上轻烟
本文链接: https://zhizhi123.com/2020/12/10/unix-common-signal/
一:信号概念
在计算机科学中,信号(英语:Signals)是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。
二:常见信号梳理
在linux系统中执行kill -l可以列出所有当前系统支持的信号列表:
1.中断信号:SIGINT
中断字符:(一般采用Delete或Ctrl+C)
默认动作:终止
“当用户按中断键(一般采用 Delete 或 Ctrl+C)时,终端驱动程序产生此信号并发送至前台进程组中的每一个进程。当一个进程在运行时失控,特别是它正在屏幕上产生大量不需要的输出时,常用此信号终止它。”
2.退出信号:SIGQUIT
退出字符(一般采用Ctrl+\)
默认动作:终止+core
“当用户在终端上按退出键(一般采用Ctrl+\)时,中断驱动程序产生此信号,并发送给前台进程组中的所有进程。此信号不仅终止前台进程组(如SIGINT所做的那样),同时产生一个core文件。”
3.挂起信号:SIGTSTP
挂起字符(一般采用Ctrl+Z)
默认动作:停止进程
作用:挂起并放到后台
“SIGTSTP 交互停止信号,当用户在终端上按挂起键(一般采用 Ctrl+Z)时,终端驱动程序产生此信号。该信号发送至前台进程组中的所有进程”
4.连接断开信号:SIGHUP
“如果终端接口检测到一个连接断开,则将此信号送给与该终端相关的控制进程(会话首进程)。此信号被送给session结构中s_leader字段所指向的进程”
5.kill默认信号:SIGTERM
“这是由kill(1)命令发送的系统默认终止信号。由于该信号是由应用程序捕获的,使用SIGTERM也让程序有机会在退出之前做好清理工作,从而优雅地终止(相对于SIGKILL而言。SIGKILL不能被捕捉或者忽略)。”
1 | kill -15 pid |
6.kill强制杀死进程信号:SIGKILL
“这是两个不能被捕捉或忽略信号中的一个。它向系统管理员提供了一种可以杀死任一进程的可靠方法。”
1 | kill -9 pid |
7.SIGSTOP信号
“这是一个作业控制信号,它停止一个进程。它类似于交互停止信号(SIGTSTP),但是SIGSTOP不能被捕捉或忽略。”
1 | kill -19 pid |
-------------本文结束,感谢您的阅读-------------
本文链接: https://zhizhi123.com/2020/12/10/unix-common-signal/
版权声明: 本作品采用 署名—非商业性使用—相同方式共享 4.0 协议国际版 进行许可。转载请注明出处!