信号生命周期图解:Coursebook一课看懂信号流转
信号生命周期图解Coursebook一课看懂信号流转【免费下载链接】coursebookOpen Source Introductory Systems Programming Textbook for the University of Illinois项目地址: https://gitcode.com/GitHub_Trending/co/coursebook对于想搞懂 Linux 系统编程的初学者来说信号Signal是最容易绕晕的概念之一。本文基于伊利诺伊大学开源教材Coursebook的 Signals 章节用一张流程图 一张时序图带你一次性看懂信号的生命周期它如何被生成Generated、挂起Pending、被阻塞Blocked、交付Delivered最终被捕获Caught或杀死进程Killed。零基础也能一图通关。图中红色流程就是完整链路Generated → Pending → Delivered → Caught/Killed蓝色分支表示信号被阻塞Blocked解除阻塞后才会继续交付。什么是信号为什么它很重要简单说信号就是操作系统异步发送给进程的低优先级消息比如你在终端按下Ctrl-C就是给程序发了一个 SIGINT 信号。Coursebook 特别强调两点帮你避开常见误区 信号 ≠ 硬件中断。这里的信号本质是内核生成的软中断可能由硬件事件触发比如非法访存引发 SIGSEGV信号主要用于终止和清理不适合用来写核心程序逻辑。信号生命周期的 4 个关键状态结合 signals/signals.tex 中的描述一条信号的完整流转是Generated生成信号被创建来源可能是用户按键、内核事件或其他进程Pending挂起信号已生成等待内核应用掩码规则——这是出生到排队的过渡期Blocked阻塞可选分支如果进程中所有线程都在屏蔽该信号它就卡在阻塞态直到有人解除阻塞Delivered交付只要有一个线程能接收内核就打断该线程跳去执行处置动作终止、忽略、core dump、停止、继续或执行自定义处理函数Caught / Killed结局进程安然无恙则算捕获否则直接阵亡。⚠️ 记住两条铁律SIGKILL 和 SIGSTOP 永远无法被捕获、阻塞或忽略正在执行处理函数期间新信号可以生成但要等处理完才能继续交付。常见信号速查表SIGINT、SIGTERM、SIGKILL 怎么选信号编号默认动作典型用途SIGINT2终止可捕获体面地停止进程Ctrl-CSIGQUIT3终止可捕获更直接地停止SIGTERM15终止进程最常用的请退出SIGSTOPN/A停止进程不可捕获冻结进程SIGCONTN/A继续进程从停止中恢复SIGKILL9终止进程不可捕获必须让进程立刻消失为什么书上劝你别动不动kill -9因为 SIGKILL 不给进程任何清理机会关闭 socket、清理临时文件、通知子进程、重置终端……全都做不了。教科书里的建议是先kill -15等一两秒不行再kill -2再不行删掉这个行为不端的程序。别为了整理花盆出动联合收割机 。信号从哪里来三种发送方式Coursebook 总结了信号生成的三个来源用户发送终端按Ctrl-C或用 shell 的kill命令系统事件内核检测到非法内存访问就发 SIGSEGV子进程状态变化也会触发信号其他进程进程间可以用信号做轻量级事件通知但教材提醒——别把信号当通信主力正经的进程间通信IPC有专门机制。顺带一提SIGSTOP可以让进程彻底冻结不再分配 CPU 时间SIGCONT让它复活。而且非 root 用户只能给同一用户的进程发信号不能想杀谁就杀谁。处理信号的正确姿势只设标志别干重活这是新手最容易踩的坑 ️信号处理函数里能用的库函数非常有限大多数函数都是异步信号不安全的——因为处理函数可能在任何时刻被再次打断。教材给的经典案例你在func里printf时被打断恢复执行后发现缓冲区已被处理函数改写输出World而不是原本该有的Hello。安全的设计模式是处理函数里只设置一个volatile sig_atomic_t标志位让主循环检查后自行退出并清理。同时建议用sigaction而不是signal后者在不同系统上行为不一致想屏蔽信号用sigprocmask/pthread_sigmask想同步等待信号用sigwait它还能让你在处理线程里安全地调用各种库函数。子进程与线程里的信号继承规则信号在fork和线程间的行为有一条容易混淆的规则看这张时序图就清晰了fork 之后子进程继承父进程的信号处置和掩码但不继承挂起中的信号exec 之后只保留信号掩码和挂起信号处理函数全部重置为默认多线程每个线程有自己的掩码新线程继承创建者的掩码但信号处置是进程级的——任何一个线程注册处理函数全进程生效。所以最佳实践是在创建新线程之前先在主线程里用pthread_sigmask屏蔽要统一处理的信号再让一个专门的线程用sigwait接收。如何在 Coursebook 中继续深挖信号信号章节完整源码signals/signals.tex配套文献 signals/signals.bib进程与fork/exec/wait基础processes/processes.tex信号退出状态的读取也在这里全书章节顺序可在 order.yaml 中查看Signals 排在第 13 章正好在进程、线程、同步、IPC 之后知识铺垫完整术语定义参考 glossary.tex如 POSIX、Linux Kernel 条目。 一句话总结信号的生命周期 生成 → 挂起 →可能阻塞→ 交付 → 捕获或终止。抓住这条主线再记住SIGKILL 不可捕获、处理函数保持极简两条原则Coursebook 这一课的信号流转你就真正看懂了。【免费下载链接】coursebookOpen Source Introductory Systems Programming Textbook for the University of Illinois项目地址: https://gitcode.com/GitHub_Trending/co/coursebook创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

你的FLAC是假无损吗?Antra内置FFT频谱分析仪实战指南(附Fake Lossless判定逻辑)

你的FLAC是假无损吗?Antra内置FFT频谱分析仪实战指南(附Fake Lossless判定逻辑)

你的FLAC是假无损吗?Antra内置FFT频谱分析仪实战指南(附Fake Lossless判定逻辑) 【免费下载链接】Antra A desktop music library builder that turns Spotify, Youtube Music Apple Music, Amazon Music, Tidal, Qobuz, and Deezer links in…

2026/10/10 20:54:57 阅读更多 →
中小企业为什么也要认真做备份?

中小企业为什么也要认真做备份?

目录 第一部分:云上备份的常见误区 误区一:云服务商负责备份 误区二:认为备份就是简单复制 误区三:一次备份就够了 第二部分:中小企业面临的常见风险 风险一:误操作导致的数据丢失 风险二&#xff1a…

2026/10/11 8:18:16 阅读更多 →
陶瓷、硬质合金金相观察容易崩边?制样与观察方案

陶瓷、硬质合金金相观察容易崩边?制样与观察方案

前阵子跟几个做硬质合金刀具、特种陶瓷基板的检测朋友唠,十有八九都在吐槽同一个糟心事:费两三个小时切样、镶嵌、磨抛,好不容易弄完搁显微镜下一看,边缘全是细碎崩边,本来要测的表层晶界、结合层结构全被崩出来的碎渣…

2026/10/9 12:46:31 阅读更多 →

最新新闻

2025年AI IDE实战测评榜:从个人开发到企业部署的完整选型攻略(TaoToken统一API接入篇)

2025年AI IDE实战测评榜:从个人开发到企业部署的完整选型攻略(TaoToken统一API接入篇)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:24:10 阅读更多 →
付了GPT-5的钱,用的是开源模型?用TaoToken统一Key看清每次调用

付了GPT-5的钱,用的是开源模型?用TaoToken统一Key看清每次调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:24:10 阅读更多 →
装完这16个Skills,我的OpenClaw终于会自己查文档了:TaoToken统一Key接入实录

装完这16个Skills,我的OpenClaw终于会自己查文档了:TaoToken统一Key接入实录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:24:10 阅读更多 →
用 Java 5 分钟写一个 MCP Server:基于开源 MCP Java SDK 接入 TaoToken 统一 Key

用 Java 5 分钟写一个 MCP Server:基于开源 MCP Java SDK 接入 TaoToken 统一 Key

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:24:10 阅读更多 →
免越狱批量控制iPhone:基于Accessibility API的合规自动化方案

免越狱批量控制iPhone:基于Accessibility API的合规自动化方案

1. 为什么“免越狱批量控制iPhone”这件事,过去十年几乎没人真正做成?“不用越狱也能批量控制 iPhone”——这句话放在2024年之前,对绝大多数iOS开发者、自动化测试工程师甚至企业IT管理员来说,都像一句带点讽刺意味的行业黑话。不…

2026/10/11 10:24:10 阅读更多 →
从“impeccable”到工程实践:代码格式化、静态检查与CI流水线

从“impeccable”到工程实践:代码格式化、静态检查与CI流水线

“impeccable”这个词,按读音是 /ɪmˈpɛkəbəl/,意思是“无可挑剔、毫无瑕疵”。我见过不少人把它当成代码注释里的形容词,写“keep the code impeccable”。说实话,第一次看到某公司前端代码仓库的提交规范里,用这…

2026/10/11 10:23:09 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 10:38:42 阅读更多 →