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

【C语言练习】071. 理解C语言中的信号处理

071. 理解C语言中的信号处理

  • 071. 理解C语言中的信号处理
      • 常用信号列表
      • 进程控制信号
      • 程序错误信号
      • 终端相关信号
      • 其他重要信号
      • 示例:信号处理代码
      • 注意事项
    • 1. 信号的基本概念
    • 2. 常见的信号
    • 3. 信号处理函数
      • 使用`signal`函数
      • 使用`sigaction`函数
    • 4. 信号的默认行为
    • 5. 忽略信号
    • 6. 阻塞信号
    • 7. 信号的优缺点
      • 优点
      • 缺点
    • 8. 总结

071. 理解C语言中的信号处理

在C语言中,信号处理是一种用于处理异步事件(如用户中断、硬件异常等)的机制。信号是一种软件中断,当某些事件发生时,操作系统会向进程发送信号。进程可以捕获这些信号,并通过信号处理函数来响应这些事件。

常用信号列表

C语言中信号处理通过<signal.h>头文件实现,以下为常见信号及其用途:

#include <signal.h>

进程控制信号

  • SIGINT (2):终端中断(如Ctrl+C)
  • SIGQUIT (3):终端退出(如Ctrl+\)
  • SIGTERM (15):终止进程(默认不可忽略)
  • SIGKILL (9):强制终止进程(无法捕获或忽略)
  • SIGSTOP (19):暂停进程执行(无法捕获或忽略)

程序错误信号

  • SIGSEGV (11):非法内存访问(段错误)
  • SIGILL (4):执行非法指令
  • SIGFPE (8):算术运算错误(如除以零)
  • SIGABRT (6):调用abort()触发的信号
  • SIGBUS (7):总线错误(错误内存访问)

终端相关信号

  • SIGHUP (1):终端连接断开
  • SIGTSTP (20):终端挂起(Ctrl+Z)
  • SIGCONT (18):恢复已停止的进程

其他重要信号

  • SIGALRM (14):定时器超时(由alarm()设置)
  • SIGUSR1 (10) / SIGUSR2 (12):用户自定义信号
  • SIGCHLD (17):子进程状态改变
  • SIGPIPE (13):管道破裂(写入无读端的管道)

示例:信号处理代码

#include <stdio.h>
#include <signal.h>
#include <unistd.h>void handler(int sig) {printf("Received signal: %d\n", sig);
}int main() {signal(SIGINT, handler);while(1) {printf("Waiting for signal...\n")
http://www.xdnf.cn/news/714799.html

相关文章:

  • 华为OD机试真题——求最多可以派出多少支队伍(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Android高级开发第一篇 - JNI(初级入门篇)
  • function reorder in binary
  • 支持selenium的chrome driver更新到137.0.7151.55
  • 如何选择适合团队的项目管理工具
  • 替代ADS1299的LH7909芯片应用方案
  • Linux系统文件描述符限制配置指南
  • DNS缓存
  • 路由器、网关和光猫三种设备有啥区别?
  • springboot面试题
  • meilisearch docker 简单安装
  • 基于Docker和YARN的大数据环境部署实践最新版
  • kafka 常用知识点
  • 4. Qt对话框(2)
  • [网页五子棋][匹配模块]用户管理器可能存在的问题以及解决办法(线程安全、多开问题)
  • Leetcode 2921. 价格递增的最大利润三元组 II
  • 知识课堂|sCMOS相机可编程快门模式解析
  • 2.2 在javaweb开发中常见后缀文件名的简单理解
  • 9.4 Q1|复旦大学CHARLS发文 | 老年人肌肉减少症和轻度认知障碍
  • Java 实现下载指定minio目录下的所有内容到本机
  • 深入解析注解框架实现原理:从源码到实战
  • 【下拉选项数据管理优化实践:从硬编码到高扩展性架构】
  • Jetson nx下realsense相机系统重启后找不到相机,需要重新插拔usb口问题解决办法
  • 实验设计与分析(第6版,Montgomery)第5章析因设计引导5.7节思考题5.5 R语言解题
  • 云渲染农场行业需求,如何搭建,有什么用途?
  • CDN安全加速:HTTPS加密最佳配置方案
  • C# Costura.Fody 排除多个指定dll
  • T5和GPT哪个更强大
  • C语言的函数调用,允许参数缺省和乱序
  • 通配符(Wildcard)与正则表达式(Regular Expression)的关系及区别