[{"data":1,"prerenderedAt":159},["ShallowReactive",2],{"blog:\u002Fblog\u002F2020\u002F12\u002F10\u002Funix-common-signal\u002F":3},{"id":4,"title":5,"body":6,"categories":132,"comments":134,"date":135,"description":136,"draft":137,"extension":138,"legacySlug":139,"meta":140,"navigation":134,"path":151,"seo":152,"stem":153,"tags":154,"updated":157,"__hash__":158},"blog\u002Fblog\u002F2020\u002F12\u002F10\u002Funix-common-signal.md","unix常见信号梳理",{"type":7,"value":8,"toc":126},"minimark",[9,14,18,22,25,32,37,40,43,46,50,53,56,59,63,66,69,72,75,79,82,86,89,100,104,107,113,117,120],[10,11,13],"h3",{"id":12},"一信号概念","一：信号概念",[15,16,17],"p",{},"在计算机科学中，信号（英语：Signals）是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制，用来提醒进程一个事件已经发生。当一个信号发送给一个进程，操作系统中断了进程正常的控制流程，此时，任何非原子操作都将被中断。如果进程定义了信号的处理函数，那么它将被执行，否则就执行默认的处理函数。",[10,19,21],{"id":20},"二常见信号梳理","二：常见信号梳理",[15,23,24],{},"在linux系统中执行kill -l可以列出所有当前系统支持的信号列表：",[15,26,27],{},[28,29],"img",{"alt":30,"src":31},"image-20201210103825133","\u002Fblog-assets\u002Funix-common-signal\u002Fimage-20201210103825133.png",[33,34,36],"h5",{"id":35},"_1中断信号sigint","1.中断信号：SIGINT",[15,38,39],{},"中断字符:（一般采用Delete或Ctrl+C）",[15,41,42],{},"默认动作：终止",[15,44,45],{},"“当用户按中断键（一般采用 Delete 或 Ctrl+C）时，终端驱动程序产生此信号并发送至前台进程组中的每一个进程。当一个进程在运行时失控，特别是它正在屏幕上产生大量不需要的输出时，常用此信号终止它。”",[33,47,49],{"id":48},"_2退出信号sigquit","2.退出信号：SIGQUIT",[15,51,52],{},"退出字符（一般采用Ctrl+\\）",[15,54,55],{},"默认动作：终止+core",[15,57,58],{},"“当用户在终端上按退出键（一般采用Ctrl+\\）时，中断驱动程序产生此信号，并发送给前台进程组中的所有进程。此信号不仅终止前台进程组（如SIGINT所做的那样），同时产生一个core文件。”",[33,60,62],{"id":61},"_3挂起信号sigtstp","3.挂起信号：SIGTSTP",[15,64,65],{},"挂起字符（一般采用Ctrl+Z）",[15,67,68],{},"默认动作：停止进程",[15,70,71],{},"作用：挂起并放到后台",[15,73,74],{},"“SIGTSTP 交互停止信号，当用户在终端上按挂起键（一般采用 Ctrl+Z）时，终端驱动程序产生此信号。该信号发送至前台进程组中的所有进程”",[33,76,78],{"id":77},"_4连接断开信号sighup","4.连接断开信号：SIGHUP",[15,80,81],{},"“如果终端接口检测到一个连接断开，则将此信号送给与该终端相关的控制进程（会话首进程）。此信号被送给session结构中s_leader字段所指向的进程”",[33,83,85],{"id":84},"_5kill默认信号sigterm","5.kill默认信号：SIGTERM",[15,87,88],{},"“这是由kill(1)命令发送的系统默认终止信号。由于该信号是由应用程序捕获的，使用SIGTERM也让程序有机会在退出之前做好清理工作，从而优雅地终止（相对于SIGKILL而言。SIGKILL不能被捕捉或者忽略）。”",[90,91,96],"pre",{"className":92,"code":94,"language":95},[93],"language-text","kill -15 pid\n","text",[97,98,94],"code",{"__ignoreMap":99},"",[33,101,103],{"id":102},"_6kill强制杀死进程信号sigkill","6.kill强制杀死进程信号：SIGKILL",[15,105,106],{},"“这是两个不能被捕捉或忽略信号中的一个。它向系统管理员提供了一种可以杀死任一进程的可靠方法。”",[90,108,111],{"className":109,"code":110,"language":95},[93],"kill -9 pid\n",[97,112,110],{"__ignoreMap":99},[33,114,116],{"id":115},"_7sigstop信号","7.SIGSTOP信号",[15,118,119],{},"“这是一个作业控制信号，它停止一个进程。它类似于交互停止信号（SIGTSTP），但是SIGSTOP不能被捕捉或忽略。”",[90,121,124],{"className":122,"code":123,"language":95},[93],"kill -19 pid\n",[97,125,123],{"__ignoreMap":99},{"title":99,"searchDepth":127,"depth":127,"links":128},2,[129,131],{"id":12,"depth":130,"text":13},3,{"id":20,"depth":130,"text":21},[133],"unix",true,"2020-12-10","一：信号概念 在计算机科学中，信号（英语：Signals）是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制，用来提醒进程一个事件已经发生。当一个信号发送给一个进程，操作系统中断了进程正常的控制流程，此时，任何非原子操作都将被中断。如果进程定",false,"md","unix-common-signal",{"excerpt":141},{"type":7,"value":142},[143,145,147,149],[10,144,13],{"id":12},[15,146,17],{},[10,148,21],{"id":20},[15,150,24],{},"\u002Fblog\u002F2020\u002F12\u002F10\u002Funix-common-signal",{"title":5,"description":136},"blog\u002F2020\u002F12\u002F10\u002Funix-common-signal",[155,156],"apue","unix编程",null,"5S2JHpfNEl_KrYaYtXFtcekcKqblCTi4QsULn5St8Sk",1783807996125]