长生栈 长生栈
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Living Team

编程技术分享
首页
  • 编程语言

    • C语言
    • C++
    • Java
    • Python
  • 数据结构和算法

    • 全排列算法实现
    • 动态规划算法
  • CMake
  • gitlab 安装和配置
  • docker快速搭建wordpress
  • electron+react开发和部署
  • Electron-创建你的应用程序
  • ImgUI编译环境
  • 搭建图集网站
  • 使用PlantUml画时序图
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 文件操作

  • Linux进程和线程

  • Linux信号

    • Linux信号简介
      • 信号概述
      • 信号的定义
      • 在shell中发送信号
      • 系统对信号的响应
    • 发送和捕获信号
    • 更健壮的信号接口
    • 信号集处理
  • 进程间通信

  • Socket

  • C语言
  • Linux信号
DC Wang
2023-02-18
目录

Linux信号简介

# Linux信号简介

Linux信号是一种在Linux操作系统中用于进程之间通信和操作进程的机制。信号是一种异步通知机制,当某个进程接收到信号时,它可以采取相应的措施,如处理信号、终止进程等。

Linux中有许多不同的信号,每个信号都有一个唯一的数字标识符,并且可以由内核或其他进程发送给一个目标进程。常见的信号包括SIGINT(中断信号,通常是由用户在终端上按下Ctrl+C发送的)和SIGKILL(强制终止信号,可以立即杀死目标进程)。开发人员可以编写信号处理函数来处理接收到的信号,并采取适当的行动。

# 信号概述

  • 信号是UNIX/Linux系统响应某些条件而产生的一个事件。接收到该信号的进程会相应的采取一些行动。

  • 信号可能是由于某些错误条件而产生,例如内存段冲突、浮点运算错误、非法指令等,也可以作为由程序控制,明确的由一个进程发送给另一个进程。

  • 信号可以被生成、捕获、响应和(至少对某些信号可以被)忽略

# 信号的定义

信号在头文件signal.h中定义,均以SIG开头。(*系统对信号的响应视情况而定)

信号名称 说明
SIGABORT *进程异常中止
SIGALRM 超时警告
SIGFPE *浮点运算异常
SIGHUP 连接挂断
SIGILL *非法指令
SIGINT 终端中断(ctrl c)
SIGKILL 终止进程(此信号不能被捕捉或忽略)
SIGPIPE 向无读进程的管道写数据
SIGQUIT 终端退出(ctrl \)
SIGSEGV *无效内存段访问
SIGTERM 终止
SIGUSR1 用户定义信号之一
SIGUSR2 用户定义信号之二

如进程接收到如上信号,但是事先没有安排捕获它,进程将会立即终止。

其他一些信号如下。

信号名称 说明
SIGCHLD 子进程已经停止或退出
SIGCONT 继续执行暂停进程
SIGSTOP 停止执行(此信号不能被捕捉或忽略)
SIGTSTP 终端挂起(ctrl z)
SIGTTIN 后台进程尝试读操作
SIGTTOU 后台进程尝试写操作

# 在shell中发送信号

  • 当在键盘上敲入中断字符(ctrl+c),就会向前台进程发送SIGINT信号,终止该程序的执行,除非事先捕获了它。

  • 如果想发送信号给不处于前台的进程,应使用kill命令。

  • 向运行着同一个程序的进程发送信号,使用killall命令。

# 系统对信号的响应

进程接收到信号之后,如果事先没有安排捕获它,进程将会执行默认动作。

  • 终止

  • 忽略

  • 暂停

  • 继续执行(SIGCONT)

编辑 (opens new window)
#C#Single#Linux#信号
上次更新: 2023/02/19, 10:48:02
线程属性
发送和捕获信号

← 线程属性 发送和捕获信号→

最近更新
01
ESP32-网络摄像头方案
06-14
02
ESP32-PWM驱动SG90舵机
06-14
03
ESP32-实时操作系统freertos
06-14
更多文章>
Theme by Vdoing | Copyright © 2019-2025 DC Wang All right reserved | 辽公网安备 21021102001125号 | 吉ICP备20001966号-2
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式