做企业网站要用什么软件,重庆轨道交通最新消息今天,最新行业动态,牡丹江宣传网信号的本质信号是Linux系统中用于进程间通信#xff08;IPC#xff09;的一种机制#xff0c;本质上是一种软件中断。它模拟了硬件中断的机制#xff0c;通知进程发生了某个事件。还是拿 “取快递”这件事来举例吧信号识别#xff08;内置能力#xff09;快递员打电话过来…信号的本质信号是Linux系统中用于进程间通信IPC的一种机制本质上是一种软件中断。它模拟了硬件中断的机制通知进程发生了某个事件。还是拿 “取快递”这件事来举例吧信号识别内置能力快递员打电话过来你不需要别人教你怎么接电话这是你的本能内核在创建进程fork时PCB进程控制块中就已经有了一张映射表规定了数字 2 代表 SIGINT数字 9 代表 SIGKILL 等。信号产生可以是快递员打电话过来也可以是手机的快递短信.......硬件层面就是键盘CTRLC软件层面就是kill命令.....信号保存重点当快递员打电话过来的时候你开了把GO1v5残局抽不开时间接电话等打完再去取快递信号不是发给进程就立刻执行的而是先保存在进程的 PCB 中。未决信号集Pending收到了信号但还没处理。阻塞信号集Blocked/Mask进程告诉内核“我现在不方便处理这个信号先留着别打断我”。注意阻塞不等于忽略。阻塞是“延后处理”忽略是“直接丢弃”。信号处理时机打完了就去取快递进程从内核态切换回用户态的前一刻。信号的三种处理方式默认动作Default大多数信号如 SIGINT的默认动作是终止进程。部分是忽略如 SIGCHLD。部分是生成 Core Dump核心转储如 SIGSEGV 段错误用于事后调试。忽略Ignore明确告诉内核“这个信号来了直接丢掉别烦我”。死穴SIGKILL (9) 和 SIGSTOP (19)不能被忽略这是上帝视角管理员的最后手段。捕捉/自定义Capture/Handler写一个函数通过 signal() 或 sigaction() 注册给内核。信号来了暂停主程序跑去执行这个函数。就是修改PCB里面的那张映射表添加一个信号和对应处理动作常见信号表信号编号名称常用场景/含义默认动作面试考点/备注2SIGINTCtrl C终止友好的终止进程可以捕获它做清理工作如保存文件。3SIGQUITCtrl \Core Dump比 CtrlC 狠一点终止并生成 Core 文件供调试。9SIGKILLkill -9强制终止不可捕捉、不可忽略、不可阻塞。立即杀死进程无法做清理工作可能导致数据丢失。11SIGSEGV非法内存访问Core Dump指针越界、野指针、访问空指针时产生。15SIGTERMkill终止默认的 kill 信号。程序可以捕获它优雅地退出释放资源后自杀。17SIGCHLD子进程状态改变忽略子进程结束时发给父进程。父进程若不处理调用 wait子进程会变成僵尸进程。19SIGSTOPkill -19暂停不可捕捉、不可忽略。类似把程序“冻结”。20SIGTSTPCtrl Z暂停这种暂停是可以被进程捕获处理的。补充为什么 SIGKILL (9) 和 SIGSTOP (19) 无法被捕获这是操作系统设计者留给系统管理员Root的“后门”或“尚方宝剑”。如果所有信号都能被进程捕获并忽略写一个死循环病毒并忽略所有信号那管理员就无法杀掉这个失控的进程系统只能重启。kill 命令是杀进程吗kill 命令的本质是向进程发送信号。kill pid 默认发送 15号信号 (SIGTERM)告诉进程“请你自己结束”。kill -9 pid 发送 9号信号 (SIGKILL)是内核直接动手杀人不给进程喘息机会。CTRLC 发生了什么按下 CtrlC本质是硬件中断触发操作系统将输入转换为 SIGINT 信号并发送给前台进程最终导致进程终止的过程。以下是详细过程1. 硬件输入敲键盘当你按下 Ctrl C键盘给 CPU 发送了一个硬件中断告诉 CPU“有按键输入了快来看”2. 系统解析翻译操作系统的终端驱动程序拿到了这个输入发现是 Ctrl C 组合键。 系统知道这个组合键不是普通的字符而是中断命令。于是它把这个命令“翻译”成了一个信号2号信号 SIGINT。3. 信号发送找目标操作系统把SIGINT信号发送给当前终端的前台进程就是你屏幕上正在运行的那个程序。4. 进程处理执行进程收到了 SIGINT 信号默认情况直接终止运行挂掉。自定义情况如果你代码里写了捕获函数Handler就执行你的函数比如清理垃圾、保存进度后再退出。kill -USR1和kill -USR2在操作系统内核层面SIGUSR1 和 SIGUSR2 没有任何区别操作系统对它们的默认处理方式都是直接终止进程它们都是用户自定义信号User-defined Signal它们的区别完全取决于程序员在写代码时给这两个信号绑定了什么功能。