【Linux】进程信号
信号 1.基本概念 信号是操作系统通知某个进程有异常或有某种事件发生的通知机制 注意: ctrc+c产生的信号只能发送给前台进程,一个命令后面加个&可以放到后台运行,这样Shell不必等待进程结束,就可以接受新的命令,启动新的进程 Shell可以同时运行一个前台进程和任意多个后台进程,只有前台进程才能接到像ctrl+c这种控制键产生的信号 前台进程可以在运行过程中用户随时可能按下ctrl+c而产生一个信号也就是说该进程的用户空间代码执行到任何地方都有可能收到SIGINT信号而终止,所以信号相对于进程的控制流程来说是异步的 编号1-31为普通信号,34-64为实时信号 2.信号的产生方式 键盘产生:用户在终端按下某些键时,终端驱动程序会发送给前台进程 硬件异常产生信号:如CPU除零运算,内核会发送一个SEGFPE,或当前进程非法访问内存地址,内核会发送一个SEGSEVG信号发送给该进程 调用系统函数向进程发信号 软件条件产生 (1)通过按键终端产生信号 SIGINT的默认处理动作是终止进程,SIGQUIT的默认处理动作是终止进程并且Core Dump。 Core Dump 当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做 Core Dump。进程异常终止通常是因为有bug,比如非法访问内存导致错误