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
您可能感兴趣的文章
- 06-17Linux进程信号的发送和保存方法
- 06-17Linux卸载自带jdk并安装新jdk版本的图文教程
- 06-17Linux系统中卸载与安装JDK的详细教程
- 06-17Linux系统配置NAT网络模式的详细步骤(附图文)
- 06-17Linux中的计划任务(crontab)使用方式
- 06-17Apache配置域名跳转的详细步骤
- 06-17Linux fsync系统调用方式
- 06-17Linux磁盘扩容lvm的使用详解
- 06-17Linux与Windows跨平台文件共享的实现方案
- 06-17Linux如何实现给/根目录扩容

