96SEO 2026-02-19 17:52 0
ttps://blog.csdn.net/2301_80220607/category_12805278.html?spm1001.2014.3001.5482

前面我们已经将进程通信部分讲完了现在我们来讲一个进程部分也非常重要的知识点——信号信号也是进程间通信的一种本篇主要讲解信号的概念和信号的几种产生方法及对应的场景
Communication的机制它用于通知进程发生了某种异步事件。
信号可以来自内核也可以来自其他进程。
进程接收到信号后会根据信号的类型以及自身的处理方式做出相应的反应。
理解信号对于编写健壮的
信号是一种软中断它是一种异步通知机制。
当某个特定事件发生时如用户按下特定组合键、系统资源耗尽、进程异常终止等系统会向相关进程发送一个信号。
每个信号都有一个对应的编号和名称例如信号
信号的主要作用是让进程能够对异步事件做出响应。
例如当用户在终端中按下
信号通常进程会接收到这个信号后停止当前正在执行的任务并退出。
信号还可以用于进程间的通信一个进程可以向另一个进程发送信号来通知其执行某些操作。
结合2.1和2.2我们来讲解一个概念信号是一种软中断是什么意思呢当我们往键盘中输入内容时是如何告诉给内核的ctrlc又是如何被解释为指令的呢
键盘实际上是通过中断来让操作系统知道自己要写入内容的键盘被按下时就会触发硬件中断不同的硬件对应着不同的中断号中断单元就可以通过它们的中断号将它们与CPU中不同的键位相连从而使CPU中这个方向的寄存器(32位)特定位置产生电信号操作系统中有一个叫中断向量表的类似于函数指针结构体的结构里面保存着访问各种外设的方法操作系统通过CPU产生的电信号就辨别出要获取哪种硬件的信息从而通过中断向量表中的方法将硬件中的信息拷贝到操作系统的文件缓冲区中(操作系统下一切皆文件且每一个文件都有自己的文件缓冲中区)然后再拷贝到用户缓冲区
同时比如键盘等外键操作系统在获取键盘上的信息时会先进行识别会对数据进行判断如果是控制进程的比如ctrlc等组合键就不会往缓冲区中拷贝我们可以发现我们学习的信号与上面的中断过程很像其实信号就是用软件方式模拟的对讲程的硬件中断所以信号也被叫做软中断
异步性信号的产生是异步的与进程的执行顺序无关。
进程在运行过程中可能随时收到信号。
简单性信号机制相对简单只需要一个信号编号就可以标识不同的信号。
系统中定义的信号数量是有限的不同的系统可能略有差异但通常在几十种左右。
我们这样执行时我们会发现在程序运行的时候我们输入其它指令比如Ispwd等都不会有结果进程还在继续运行除非用ctrlc终止掉进程这样的进程称为前台进程
这种的后面加上地址符的叫做后台进程后台进程可以被其它进程命令临时打断并执行这个命令比如我们输入ls指令进程就会暂停并且输出Is的结果但是最后需要自己把进程结束掉
一个终端一般会配上一个bash每一个登陆只允许一个进程是前台进程可以允许多个进程是后台进程
当./process运行时输入指令之所以不能运行就是因为此时的前台进程由bash转变为了process
前台进程会独占终端直到进程执行完成或者被挂起在这期间终端无法接受其他命令输入用户只能与该进程进行交互。
后台进程不会占用终端终端可以继续接受用户输入的其他命令用户可以在同一个终端中同时启动多个后台进程并随时切换到其他任务。
前台进程其执行过程会受到用户操作的直接影响比如用户可以通过键盘输入来中断或暂停进程。
如果终端关闭前台进程通常会被终止除非进行了特殊的设置。
后台进程通常是长时间运行的不受终端关闭的影响除非明确地对其进行停止或重启操作。
它按照自身的逻辑和任务需求在后台持续运行不会因为用户的一些常规操作而中断。
信号用于中断当前正在运行的进程。
比如我们在终端中运行一个长时间运行的命令while
信号不仅会终止进程还会生成核心转储文件如果系统配置允许一般在云服务器上是默认关闭的虚拟机上可能是开启的。
例如运行一个简单的
core具体名称和位置可能因系统配置而异。
了解即可这个生成core文件的内容与进程退出部分也有联系有想了解的可以单独去搜索一下
进程异常当进程发生异常时如段错误访问非法内存地址、除零错误等系统会向该进程发送相应的信号。
Fault当进程访问了不属于它的内存区域时会产生段错误一般都是野指针问题系统会向该进程发送
Zero当进程执行除法运算时如果除数为零会产生除零错误系统会向该进程发送
系统资源相关当系统资源达到一定阈值时也可能产生信号。
例如当进程使用的内存超过了系统限制时系统可能会发送
信号来终止该进程以防止系统内存耗尽。
不过这种情况通常需要系统进行相关的配置和监控。
信号在终止进程的同时会生成核心转储文件该文件包含了进程在收到信号时的内存状态等信息可用于调试程序。
SIGCHLD子进程状态改变时发送给父进程的信号的默认处理方式是忽略。
在这里进行一些清理工作如关闭文件、释放资源等_exit(0);
(1){printf(Running...\n);sleep(1);}return
信号时会调用signal_handler函数而不是默认的终止进程操作。
函数提供了更丰富的功能它可以设置信号处理函数、处理信号时的掩码、信号的标志等。
sigaction
是指向旧的信号处理动作的结构体指针如果不需要获取旧的处理动作可以设为
在这里进行一些清理工作如关闭文件、释放资源等_exit(0);
old_action;new_action.sa_handler
signal_handler;sigemptyset(new_action.sa_mask);new_action.sa_flags
(1){printf(Running...\n);sleep(1);}return
系统中一种重要的进程间通信和异步事件通知机制。
通过本文我们详细了解了信号的概念信号的产生和部分信号的处理工作后面我们还会讲解信号的捕捉等处理工作学习信号可以帮助我们更好的实现进程通信和异步处理等诸多操作
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback