尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
[linux]信号处理:信号编码、基本API、自定义函数和集合操作的详解
目录一、信号的概述1、定义2、信号的编号​编辑3、 发起信号的方式二、未决信号集、信号阻塞集​编辑三、信号的API1、kill函数2、 raise函数3、abort函数4、alarm函数(闹钟)​编辑5、setitimer函数(定时器)四、 给信号 注册 自定义函数1、signal函数2、sigaction函数五、集合操作1、信号集合的概述2、自定义信号集函数3、sigprocmask 阻塞集操作函数4、sigpending未决信号集函数六、进程间通信方式(IPC)一、信号的概述1、定义 信号是 Linux 进程间通信的最古老的方式。信号是软件中断,它是在软件层次 上对中断机制的一种模拟,是一种异步(不等待)通信的方式 。信号可以导致一个正在运行的进程被 另一个正在运行的异步进程中断,转而处理某一个突发事件。信号的特点 简单 不能携带大量信息满足某个特设条件才发送。(进程间通信方式:无名管道、无名管道、消息队列、共享内存)一个完整的信号周期包括三个部分:信号的产生,信号在进程中的注册, 信号在进程中的注销,执行信号处理函数注意:这里信号的产生,注册,注销是信号的内部机制,而不是信号的函数实现。2、信号的编号其中1-31号信号称之为常规信号(也叫普通信号或标准信号),34-64称之为实时信号,驱 动编程与硬件相关。名字上区别不大。而前32个名字各不相同每个信号必备4要素,分别是:编号 、名称 、事件 、默认处理动作。可通过man 7 signal查看帮助文档。Action默认动作Term:终止进程Ign:忽略信号(默认即时对该种信号忽略操作]Core:终止进程,生成Core 文件。(查验死亡原因,用于gdb调试)Stop:停止(暂停)进程Cont:继续运行进程注意3、 发起信号的方式当用户按某些终端键时,将产生信号,如“ctrl+c”、“ctrl+z”硬件异常将产生信号。 除数为 0,无效的内存访问等软件异常将产生信号(如定时器)调用系统函数(如:kill、raise、abort)将发送信号运行 kill /killall命令将发送信号二、未决信号集、信号阻塞集未决信号集:信号发生 但未被处理的信号集合。(放在PCB中)信号阻塞集:加入信号阻塞集的信号 不被处理。(放在PCB中)三、信号的API1、kill函数#includesys/types.h#includesignal.hint kill(pid_t pid, int sig);功能:给指定进程发送指定信号(不一定杀死)参数:pid : 取值有 4 种情况 :pid 0: 将信号传送给进程 ID 为pid的进程。pid = 0 : 将信号传送给当前进程所在进程组中的所有进程。pid = -1 : 将信号传送给系统内所有的进程。pid -1 : 将信号传给指定进程组的所有进程。这个进程组号等于 pid 的绝对值。sig : 信号的编号,这里可以填数字编号,也可以填信号的宏定义,可以通过命令 kill - l("l" 为字母)进行相应查看。不推荐直接使用数字,应使用宏名,因为不同操作系统信号编号可能不同,但名称一致。返回值: 成功:0 失败:-1super用户(root)可以发送信号给任意用户,普通用户是不能向系统用户发送信号的。同样,普通用户也不能向其他普通用户发送信号,终止其进程。只能向自己创建的进程发送信号。2、 raise函数#includesignal.hint raise(int sig); 功能:给当前进程发送指定信号(自己给自己发),等价于 kill(getpid(), sig)参数:sig:信号编号
RELATED

相关推荐

实战指南:单机部署达梦DM8数据库主备集群,实现高可用与自动切换

实战指南:单机部署达梦DM8数据库主备集群,实现高可用与自动切换

一、 引言:为什么需要数据库主备集群?在当今企业级应用中,数据库的高可用性(High Availability)和数据可靠性是业务连续性的基石。单点故障可能导致服务中断、数据丢失,进而造成巨大的经济损失和声誉损害。…

📅 2026/10/30 2:32:20
Cesium —— 模型格式转换

Cesium —— 模型格式转换

如有侵权或其他问题,欢迎留言联系更正或删除。

📅 2026/10/28 14:01:20
【linux】进程管理:进程控制块、进程号、fork创建进程、特殊进程及exec函数族解析

【linux】进程管理:进程控制块、进程号、fork创建进程、特殊进程及exec函数族解析

目录 一、进程的概述 1、程序和进程的区别 2、单道和多道程序设计 3、并行和并发的区别 4、进程控制块(PCB) 5、进程的状态 ​二、进程号PID 1、获取进程号的函数 2、获取父进程的ID 3、获取进程组的ID 三、 fork创建进程 1、fork函数 2、fork出来的子进程和父进程…

📅 2026/10/13 12:08:55
MORE NEWS

更多资讯

📰

HarmonyOS图像处理优化:高精度头像裁剪实践

1. HarmonyOS图像处理的技术背景与挑战HarmonyOS作为新一代智能终端操作系统,其图像处理能力直接关系到用户体验。在移动设备上实现高精度图像处理需要克服三大技术难点:内存限制、计算资源分配和实时性要求。与传统Android系统相比,HarmonyO…

📰

模板错误消息优化:提升开发效率的关键技术

1. 模板错误消息优化的核心价值 在各类软件系统和开发框架中,模板错误是最常见的报错类型之一。无论是前端模板引擎(如Jinja2、Thymeleaf)、文档模板(如Word/LaTeX),还是代码生成模板,当出现语法…

📰

deepin 20 主力开发环境:选型、配置与排障实践

折腾开发环境这件事我有个不太主流的习惯:每换一次主力机,就顺手换一个发行版用上半年,把日常写代码、跑服务、调前端的那套流程重新走一遍。去年我把工作机的系统换成了deepin 20,一直用到现在,期间重构过两次工具链,也踩了不少只有长期当主力机用才会暴露的问题。这篇就聊聊把…

📰

AI科研工具如何提升数据处理与论文写作效率

1. 项目概述:AI如何重塑科研工作流科研工作者每天要处理三类核心任务:数据收集与清洗、论文写作与润色、图表设计与绘制。传统模式下,这三项工作往往需要切换多个专业工具,耗费大量时间在重复性劳动上。"龙虾热点"这个比…

📰

前端开发者必掌握的CSS核心技术与工程实践

1. 为什么每个前端开发者都需要系统掌握CSS美学十年前我刚入行前端时,曾经天真地认为CSS不过是给HTML"穿衣服"的简单工具。直到参与第一个企业级项目,面对设计师交付的精密视觉稿和产品经理严苛的像素级验收标准,我才真正理解CSS作…

📰

Linux下Redis安装配置与优化实战指南

1. Linux环境下Redis安装全指南 Redis作为当前最流行的内存数据库之一,在缓存、消息队列、实时统计等场景中发挥着关键作用。作为一名长期使用Redis的开发者,我在各种Linux发行版上部署Redis的经历可以追溯到5.0版本时代。本文将分享从源码编译到系统集成…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬