当前位置: 首页 > news >正文

C++面试题:Linux系统信号详解

在C++面试中,理解Linux信号机制是考察系统编程能力的关键点之一。

信号(Signal)是Linux中进程间通信的异步通知机制,用于处理突发事件(如中断、异常或强制终止)。

以下是Linux系统常见信号的分类、含义及典型应用场景,基于最新POSIX标准和常见实现整理。信号分为普通信号​(编号1-31)和实时信号​(32-64),本文重点介绍31个普通信号。


一、信号核心概念

  • 信号本质​:软中断,由内核、用户或其他进程发送,通知目标进程状态变化(如终端断开、内存错误等)
  • 处理方式​:
    • 默认动作​:终止进程(Term)、生成核心转储(Core)、忽略(Ignore)、停止(Stop)或继续(Continue)
    • 自定义处理​:通过signal()sigaction()注册处理函数,但SIGKILLSIGSTOP不可被捕获、阻塞或忽略
  • 查看命令​:终端执行 kill -l 可列出所有信号

二、常见Linux信号列表(精选15个关键信号)

以下是面试中最常涉及的信号,包括编号、名称、触发原因及默认动作:

编号信号名称触发原因默认动作
1SIGHUP终端挂断(如SSH断开)、守护进程重载配置(如Nginx刷新)终止进程
2SIGINT用户输入Ctrl+C中断前台进程终止进程
3SIGQUIT用户输入Ctrl+\退出进程终止并生成core
4SIGILL执行非法指令(如CPU不支持的指令)终止并生成core
6SIGABRT调用abort()函数或断言失败终止并生成core
8SIGFPE算术错误(如除零、浮点溢出)终止并生成core
9SIGKILLkill -9强制终止进程(不可捕获)立即终止
11SIGSEGV非法内存访问(如空指针解引用、缓冲区溢出)终止并生成core
13SIGPIPE向无读端的管道写入数据(如网络连接断开后继续写)终止进程
14SIGALRM定时器到期(由alarm()setitimer()设置)终止进程
15SIGTERM默认终止信号(kill命令不加参数时发送),允许进程清理资源终止进程
17SIGCHLD子进程终止或停止时通知父进程忽略
18SIGCONT恢复被暂停的进程(如fg命令)继续执行
19SIGSTOP暂停进程(不可捕获,Ctrl+Z触发SIGTSTP停止进程
20SIGTSTP终端暂停信号(Ctrl+Z停止进程

​:

  • 生成core文件​:用于调试,记录进程崩溃时的内存状态(需系统配置允许)
  • 不可靠信号​:编号1-31的信号可能丢失(如连续发送时),而实时信号(32+)支持排队

三、信号在C++中的处理

在C++系统编程中,需掌握信号处理函数:

  1. 注册信号处理​:
#include <csignal>
void handler(int sig) { /* 自定义逻辑 */ }
signal(SIGINT, handler);  // 捕获SIGINT
  1. 发送信号​:
    • 终端:kill -<信号编号> <PID>
    • 代码:kill(<PID>, SIGTERM) 或 raise(SIGABRT)(向自身发送)
  2. 注意事项​:
    • 信号处理函数应避免复杂操作​(如调用非异步安全函数),否则可能引发重入问题。
    • 多线程中信号处理需谨慎,建议使用pthread_sigmask屏蔽信号

四、面试常见问题扩展

  1. SIGKILL vs SIGTERM
    • SIGTERM允许进程优雅退出(可自定义清理);SIGKILL强制终止(内核直接回收资源)
  2. 信号屏蔽​:
    • 使用sigprocmask阻塞信号(如防止SIGINT中断关键代码),sigpending检查未决信号
  3. 实际应用场景​:
    • 服务器:SIGHUP重载配置,SIGCHLD回收子进程资源。
    • 调试:SIGSEGV定位内存错误,SIGTRAP(5)配合断点调试


【C语言】零基础到项目实战

【C语言/C++】零基础到项目实战

初学者营地:1021486511

相关文章:

  • 01流程定位
  • 信息化项目验收测试:MES 系统验收测试的测试重点
  • DeepSeek R1 模型小版本升级,DeepSeek-R1-0528都更新了哪些新特性?
  • 【Netty系列】Reactor 模式 1
  • C语言编程--21.两两交换链表中的结点
  • AI赋能SEO关键词策略
  • [FreeRTOS- 野火] - - - 临界段
  • 堆遇到的stl与理论基础
  • Live Helper Chat 安装部署
  • BG22L和BG24L精简版蓝牙SoC推动智能物联网走向更广天地
  • 大话软工笔记—分离原理
  • 虚拟应用(vapp)、NICE DCV传输协议、云桌面(VDI)的区别
  • 二分法算法技巧-思维提升
  • 从 leanback 的npe崩溃谈起
  • leetcode2221. 数组的三角和-medium
  • 榕壹云医疗服务系统:基于ThinkPHP+MySQL+UniApp的多门店医疗预约小程序解决方案
  • 【git stash切换】
  • MySQL事务及其原理
  • Bonjour
  • 7.3 Organizing data into training batches
  • 网页制作三剑客是指哪三个软件/怎么分析一个网站seo
  • 香港最新消息疫情/中国十大seo
  • 电子商务网站建设与管理考试/电商运营培训
  • 自开发网站/开通网站需要多少钱
  • 个人网站备案通过后/网站在线客服系统 免费
  • pc28网站开发/怎么制作网站?