尧图网络 高端网站定制 · 原创设计
免费咨询热线
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/8/23 17:08:22
Cesium —— 模型格式转换

Cesium —— 模型格式转换

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

📅 2026/8/23 17:08:22
【linux】进程管理:进程控制块、进程号、fork创建进程、特殊进程及exec函数族解析

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

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

📅 2026/8/23 17:08:22
MORE NEWS

更多资讯

📰

Wagtail 6.0.2 发布说明深度解析:Chooser 模态框、ModelViewSet 与 TableBlock 的 8 项关键修复

Wagtail 6.0.2 发布说明深度解析:Chooser 模态框、ModelViewSet 与 TableBlock 的 8 项关键修复 【免费下载链接】wagtail A Django content management system focused on flexibility and user experience 项目地址: https://gitcode.com/GitHub_Trending/wa/wa…

📰

Waybar 日历周数显示错位、算错?这份快速修复指南一次讲清

Waybar 日历周数显示错位、算错?这份快速修复指南一次讲清 【免费下载链接】Waybar Highly customizable Wayland bar for Sway and Wlroots based compositors. :v: :tada: 项目地址: https://gitcode.com/GitHub_Trending/wa/Waybar 本文针对 Waybar 时钟&…

📰

pykan 实战:用 KAN 从二维哈密顿流场中无监督学习守恒律(Conservation Laws)

pykan 实战:用 KAN 从二维哈密顿流场中无监督学习守恒律(Conservation Laws) 【免费下载链接】pykan Kolmogorov Arnold Networks 项目地址: https://gitcode.com/GitHub_Trending/pyk/pykan 导读:本指南完整复现 pykan 仓…

📰

Megatron-LM 大型 PR 拆分实战:基于 CODEOWNERS 分组的最小审查集合拆分指南

Megatron-LM 大型 PR 拆分实战:基于 CODEOWNERS 分组的最小审查集合拆分指南 【免费下载链接】Megatron-LM Ongoing research training transformer models at scale 项目地址: https://gitcode.com/GitHub_Trending/me/Megatron-LM 导读 本文面向向 NVIDIA…

📰

amis 页面交互行为跟踪(tracker)实战指南:从采集到上报的完整方案

amis 页面交互行为跟踪(tracker)实战指南:从采集到上报的完整方案 【免费下载链接】amis 前端低代码框架,通过 JSON 配置就能生成各种页面。 项目地址: https://gitcode.com/GitHub_Trending/am/amis amis 从 1.5.0 版本起…

📰

ClickHouse v21.7.3.14-stable 深度解析:从七个 Bug 修复看分布式查询与几何函数的内核细节

ClickHouse v21.7.3.14-stable 深度解析:从七个 Bug 修复看分布式查询与几何函数的内核细节 【免费下载链接】ClickHouse ClickHouse is a real-time analytics database management system 项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse v…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬