欢迎来到IDC91站长网!
解决服务器各种技术问题,加微信uecomzsr

Linux

当前位置: IDC91 > 服务器教程 > Linux

Linux进程信号的发送和保存方法

时间:2025-06-17 08:34:57|栏目:Linux|点击:

1、信号动作

通过指令man -7 signal查看信号的手册,然后往下翻翻可以看到普通信号发出后对应的操作,以及它们的信号编号,和详细描述信息

2、信号发送的本质

普通信号

信号发送的本质实际上是写信号,把信号写到进程PCB结构体对应的位图上去,在进程的PCB中有这么一个位图(是pending位图,下面会说)正好对应着我们从1 ~ 31的普通信号编号,收到哪个信号就将哪一位对应的比特位置为1,表示收到信号,然后PCB再做对应的工作

值得注意的是,如果连续发普通信号,那么进程只会处理最后一次的信号,每次写都是覆盖写的

实时信号

我们前面说过信号分为31个普通信号和31个实时信号,实时信号的作用类似于我们嵌入式RTOS实时运转场景,要保持实时性,实时信号发送的本质类似于普通信号,不过此时我们保存信号的载体不再是一个位图,而是一个结构体,它们被组织在信号队列当中,谁先发送谁就先入队,队列遵循先入先出的规则,所以先发送也代表着先被处理

值得注意的是,如果连续发实时信号,那么进程会将队列中的信号一个个全部处理

3、core dump

当程序在运行过程中发生崩溃(如段错误、除零错误等),Core dump 会记录下程序崩溃瞬间的内存状态,包括寄存器的值、调用栈信息、全局变量和局部变量的值等,开发人员可以使用调试工具(如 GDB)加载 Core dump 文件,通过分析这些信息,准确地找到程序崩溃的位置和原因

我们可以通过ulimit -c 10240将core文件的大小限制修改为10240字节,出现错误的时候core文件可能瞬间会被打满的,所以我们云服务器上一般默认core文件的大小限制为0,我们要是用的话再修改它的大小限制即可
形成的文件叫做core.pid,pid就是出错进程的pid,假设test进程出现错误,12314是它的pid,我们可以通过在gdb模式下输入gdb test core.12314打印错误信息和原因

上一篇:Linux卸载自带jdk并安装新jdk版本的图文教程

栏    目:Linux

下一篇:暂无

本文标题:Linux进程信号的发送和保存方法

本文地址:https://idc91.com/fuwuqizl/5070.html

广告投放 | 联系我们 | 免责申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

Copyright © 2023 IDC91.COM 版权所有晋ICP备17006296号