微资讯!【进程通信】Signal信号 信号的来源是哪?
信号(signal)
软中断信号(signal,又简称为信号)是Linux下用来在进程间传递消息的方式之一,也是进程间唯一的异步通信方式。从命名中可以看出信号的实质很像中断。进程间可以通过调用kill库函数发送软中断信号,Linux内核也可能给进程发送信号,用以告知该进程发生了某个异步事件。
(资料图片)
注意,信号只用来告知进程发生了某个异步事件,并不用来传递数据。进程收到信号后会有三种处理方式:
忽略,不做任何处理执行预先设置的处理函数(就像中断服务程序一样)采用系统的默认操作,大部分是终止进程
信号的来源
用户
一般是键盘的输入会作为信号发送给进程,比如:Ctrl + C发送SIGINT信号给进程,默认动作为终止进程;Ctrl + \发送SIGQUIT信号给进程,默认动作为终止进程并进行内核映像转储(core dump)
内核
当进程执行出错时,内核给进程发送一个对应信号,例如:非法内存引用、浮点数溢出、执行非法指令
进程
C++的kill库函数用于进程间发送信号
信号的类型
信号名信号值默认处理动作发出信号的原因
SIGINT2终止进程键盘中断Ctrl+c
SIGQUIT3终止进程并进行内核映像转储键盘的退出键被按下
SIGKILL9终止进程,并且不能被捕获、忽略采用kill -9 进程编号 强制杀死程序。
SIGSEGV11终止进程并进行内核映像转储无效的内存引用
SIGTERM15终止进程采用“kill 进程编号”或“killall 程序名”通知程序。
SIGCHLD20,17,18忽略此信号子进程结束信号
PS:
内核映像转储(core dump),内核映像转储是指将进程数据在内存的映像和进程在内核结构中的部分内容以一定格式转储到文件系统,并且进程退出执行,这样做的好处是为程序员 提供了方便,使得他们可以得到进程当时执行时的数据值,允许他们确定转储的原因,并且可以调试他们的程序。
信号的捕获处理
#includesighandler_t signal(int signum, sighandler_t handler)//signum 表示信号的编号 //handler 表示信号的处理方式,有三种: 1. SIG_IGN:忽略改信号,不作为 2. SIG_DFL:恢复该信号的默认处理方法 3. 自定义处理函数,注意函数参数为 (int signum)
信号的发送
int kill(pid_t pid, int sig)//pid 目标进程号,有三种情况: 1. pid>0 将信号sig传给号为pid的进程 2. pid=0 将信号sig传给同进程组的所有进程(包括自己),常用于父进程给子进程发送信号 3. pid=-1 将信号广播到系统内所有进程,例如系统关机时向所有登录窗口广播关机信息 //sig 被发送的信号编号
信号的应用
屏蔽信号
通常为了程序不被干扰,程序开头通常会屏蔽所有信号,然后再用signal函数对关心的信号设置相应的处理方式。
for(int i=0; i<100; i++) signal(i, SIG_IGN);
搞点好玩的
改变信号 SIGINT和 SIGTERM的捕获处理,设计一个 ctrl+C和 kill都杀不掉的进程:
#include#include#includevoid func(int sig){if (sig == SIGINT) printf("\b\b杀不死,哈哈哈哈。\n"); else if (sig == SIGTERM) printf("还是杀不死,哈哈哈哈。\n");}int main(){for (int ii = 0; ii < 100; ii++) signal(ii, SIG_IGN); // 屏蔽全部的信号 signal(SIGINT, func); signal(SIGTERM, func); // 设置SIGINT和SIGTERM的处理函数 while (1);}
效果:
使用Ctrl+C尝试关掉进程:
用 ps -ef | grep signal找到其进程号,尝试用 kill 直接干掉:
可以看见,kill + 进程号或 killall + 进程名对它都无效,那改怎么杀死这个进程呢?如图,用 kill -9 进程号:
因为kill -9 进程号发送的信号是 SIGKILL,这个信号无法被捕获或忽略,能够快准狠杀掉进程
使系统休眠
这个是我尝试用 kill() 函数向系统所有进程发送 SIGKILL 信号后发现的,当然是在虚拟机上,我可不敢在主机上这样搞:
#include#includeint main(){kill(-1, SIGKILL);}
效果是虚拟机进入休眠,输入密码后能再进入,原以为会直接关机呢
标签:
相关推荐:
最新新闻:
- 三阶魔方还原公式是什么?三阶魔方的还原公式:环球今日报
- Visio绘图文件阅读器 VSD Viewer版功能介绍
- MetroModernUI库应用实例 MetroModernUI库安装流程_天天速看
- 联想V480EI Capitan完美驱动教程 安装黑苹果的步骤及注意事项|全球百事通
- c语言编程题中华文本库 计算机考试二级C语言上机试题|当前速看
- Slony到底是什么?关于VMware Desktone中的Slony和数据库
- 辽源市谷歌高清卫星地图离线包如何下载?:视焦点讯
- 洛谷 P8400 Cupcake Party 计算机科学教育新生态 :视焦点讯
- 环球观察:样本容量怎么确定?影响样本容量n的因素
- 微资讯!【进程通信】Signal信号 信号的来源是哪?
- 现在进行时怎么使用?现在进行时和一般现在时的将来时态_微速讯
- 图片的格式怎么改?教你快速转格式的方法
- 天天精选!ic卡消费管理系统 4.人脸消费管理系统的优势有哪些?
- 全球聚焦:希捷宣布全球大裁员 股价在盘后大涨9%至26.26美元
- 当前头条:sqlserver2005好用吗?安装及SQL 2005 SP3补丁安装详解
- Windows Live应用怎么添加到网站或博客?
- Matlab中max函数 max函数式是求数组的最大元素
- 世界快看点丨信息的价值是什么?信息的英文名Information
- 排名精灵怎么样?排名精灵功能评测
- 钛备份怎么用?钛备份怎么还原?
- 怎么用魔影工厂转换视频?魔影工厂怎么识别爱奇艺的视频?
- connectify怎么设置?connectify如何设置使用教程
- Win7系统中WmiPrvSE是什么进程?如何禁止Wmiprvse.exe进程?
- Anyview阅读APP如何使用?Anyview阅读使用图文教程
- win7使用过程中出现错误1079故障的原因及解决方法
- 网页中Flash如何下载?网页中Flash下载方法
- 网络老是掉线怎么回事?wifi一段时间断开怎么办?
- win10怎么升级正版?win10升级正版步骤
- qq远程控制鼠标点不动怎么?qq远程控制鼠标点不动解决方法
- 跨显卡双屏显示怎么设置?跨显卡双屏显示设置问题
- 如何通过Logoup 3D制作立方体?Logoup 3D制作立方体操作步骤
- 视频万能驱动怎么安装?视频万能驱动安装方法
- 怎么给手机版的WPS文档加密?手机版的WPS文档加密方法
- Adblock浏览器怎么用?Adbloc去广告浏览器下载
- win10 Build 9865怎么更新升级?win10 Build 9865更新升级方法
- qq授权管理在哪里?qq授权管理介绍
- 腾讯防沉迷如何通过官方修改?腾讯防沉迷修改方法
- 电脑断网掉线怎么办?电脑断网掉线的解决方法
- 九章云极DataCanvas公司荣获 “WISE2022新经济之王年度企业”
- 如何做好软文推广? 软文推广的方法和技巧是什么?
- alg是什么文件?alg.exe是不是病毒?
- 如何解决电脑开机自动打开文件夹问题?电脑开机自动打开文件夹解决方法
- chkdsk工具怎么运行修复?chkdsk工具运行修复方法
- steam启动游戏失败错误代码83怎么回事?steam错误代码83的原因及解决方法
- 360安全卫士怎么修复dll文件?修复dll文件方法
- 小键盘怎么开?笔记本电脑小键盘怎么用?
- 多道程序设计是什么意思?多道程序设计运行的特征
- 硬盘的型号怎么看出来?硬盘的型号介绍
- 电脑开机后没有显示桌面如何解决?电脑开机后没有显示桌面解决方法
- 启用硬件加速是什么意思?启用硬件加速方法
- dwm.exe是什么进程?dwm.exe为什么运行?
- redhat关机注销命令是什么?redhat关机注销命令介绍
- 为什么word文档会自动生成一个临时文件?
- 电脑屏幕分辨率太低了怎么办?电脑屏幕分辨率太低解决方法
- 电脑屏幕出现有雪花怎么办?电脑屏幕出现有雪花解决方法
- 怎么找到电脑里的临时文件夹?邮箱里打开的文件临时文件夹在哪?
- Windows如何一键修改注册表?一键修改注册表方法
- windows自带的truetype造字程序怎么使用?truetype造字程序使用教程
- 如何查找QQ群里某个人在群里的聊天记录?查找QQ群里某个人在群里的聊天记录方法
- 当前最新:《巫师3》血与酒DLC次世代画面演示:优美的异域风情
- FIFA世界杯官方宣布:半决赛现场将播放陈奕迅的《孤勇者》和苏打绿的《相信》
- 国际医疗器械巨头波士顿科学宣布要约收购先瑞达最多65%股份
- 《暗黑破坏神4》PS5版支持键盘和鼠标操作|世界独家
- 港服PSN会员开启折扣活动 仅限非会员用户
- 《阿凡达:潘多拉边境》上线PS商店 或有合作模式
- 《死亡搁浅2》公布后 小岛秀夫游戏搜索量暴增50倍|世界看点
- 《我推的孩子》TV动画新预告 确定2023年4月开播
- 手机通信行程卡功能13日起正式下线-环球速讯
- 超值!小米迷你主机众筹价仅2799元
- 要闻:爆款UPS电源、会议平板5折!京东电脑数码12.12万件商品5折开抢
- A股一周策略前瞻:扩散会发生在哪?大小风格何时变?:今日热门
- 天天观察:这个冬天可能很冷、很长,2023年或成航运业拆船大年
- 冷知识:国足都曾击败过本届世界杯4强:环球观察
- 中国天眼获得银河系气体高清图像 揭露恒星诞生到消亡
- 《变形金刚:再启动》海报公开 震撼末日世界
- Xbox老板:索尼试图让Xbox规模变小来巩固自己地位-世界聚看点
- 《死亡搁浅2》动捕画面 蕾雅·赛杜和忽那汐里亮相
- 害怕发烧?美国一男子的血液可以杀死新冠
- 环球视讯!18年前的今天索尼正式推出了掌上游戏机PSP
- 米哈游将于春节期间播出《崩坏3》特别动画:环球看热讯
- Capcom公布《街头霸王6》超模Manon角色资料
- 降噪天花板! 索尼WH-1000XM5耳机跌破2000元_世界今头条
- 18英寸超震撼 外星人巨屏游戏本即将回归_全球热点
- 界面如同Windows 11 国产新OS系统让老外很吃惊
- 逼死入门独显 英特尔14代酷睿核显性能飞升