1.77、Linux中的信号有哪些?
主要信号分类及代表信号
- • 标准信号(Standard Signals):Linux支持POSIX标准信号,编号通常从1到31,涵盖了大部分常见事件。
- • 实时信号(Real-time Signals):编号从32开始,支持排队和优先级,适合复杂的进程间通信。
常见Linux信号及含义
信号名 | 编号 | 说明 | 特点 |
SIGHUP | 1 | 终端挂断或控制进程终止 | 通常用于重新加载配置 |
SIGINT | 2 | 用户中断(Ctrl+C) | 可被捕获,常用于程序终止请求 |
SIGQUIT | 3 | 用户请求退出(Ctrl+\) | 产生核心转储 |
SIGILL | 4 | 非法指令 | 程序错误导致 |
SIGABRT | 6 | 异常终止(abort调用) | 通常用于程序自我检测失败 |
SIGFPE | 8 | 浮点异常(如除零) | 算术错误 |
SIGKILL | 9 | 强制终止进程 | 不可捕获、阻塞或忽略 |
SIGSEGV | 11 | 无效内存访问(段错误) | 访问非法内存地址 |
SIGPIPE | 13 | 向已关闭的管道写数据 | 通信异常 |
SIGALRM | 14 | 定时器到期 | alarm系统调用触发 |
SIGTERM | 15 | 终止请求(软件终止) | 可被捕获,优雅退出 |
SIGCHLD | 17 | 子进程状态改变 | 父进程接收子进程退出通知 |
SIGCONT | 18 | 继续执行停止的进程 | 恢复被SIGSTOP暂停的进程 |
SIGSTOP | 19 | 停止进程 | 不可捕获,强制暂停 |
SIGTSTP | 20 | 终端停止信号(Ctrl+Z) | 可捕获,用户请求暂停 |
SIGUSR1/2 | 10/12 | 用户自定义信号 | 用户程序自定义用途 |
信号处理机制
- • 默认动作:终止、忽略、停止或产生核心转储。
- • 自定义处理:程序可注册信号处理函数(handler)捕获并处理信号。
- • 阻塞与屏蔽:进程可通过信号屏蔽字阻止特定信号的处理,保证关键代码段的安全。
面试考察重点
- • 理解信号的异步性质及其在进程间通信和异常处理中的作用。
- • 熟悉常见信号及其默认行为,尤其不可捕获的信号如SIGKILL和SIGSTOP。
- • 能够解释信号处理流程,包括信号捕获、阻塞、默认动作和自定义处理函数。
- • 了解实时信号与标准信号的区别及应用场景。
- • 掌握如何在C++程序中使用
signal()
或sigaction()
注册信号处理函数。
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。
(加入我的知识星球,免费获取账号,解锁所有文章。)
阅读剩余
版权声明:
作者:讳疾忌医-note
链接:https://www.1217zy.vip/archives/1470
文章版权归作者所有,未经允许请勿转载。
THE END