linux——signal信号(SIGHUP、SIGINT、SIGQUIT、SIGILL、SIGTR

article/2025/10/28 23:42:05


    SIGHUP /* hangup */
          SIGHUP,hong up ,挂断。本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。
          登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和 后台进程组,一般都属于这个 Session。当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进 程组和后台有终端输出的进程就会中止。不过可以捕获这个信号,比如wget能捕获SIGHUP信号,并忽略它,这样就算退出了Linux登录,wget也 能继续下载。
          此外,对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。

    SIGINT /* interrupt */
          程序终止(interrupt)信号, 在用户键入INTR字符(通常是Ctrl+C)时发出,用于通知前台进程组终止进程。

    SIGQUIT /* quit */
          和SIGINT类似, 但由QUIT字符(通常是Ctrl+)来控制. 进程在因收到SIGQUIT退出时会产生core文件, 在这个意义上类似于一个程序错误信号。

    SIGILL /* illegal instr. (not reset when caught) */
          SIGILL,illeage,非法的。执行了非法指令, 通常是因为可执行文件本身出现错误, 或者试图执行数据段. 堆栈溢出也有可能产生这个信号。

    SIGTRAP
          由断点指令或其它陷阱(trap)指令产生. 由debugger使用。

    SIGABRT
          调用abort函数生成的信号。

    SIGBUS
          非法地址, 包括内存地址对齐(alignment)出错。比如访问一个四个字长的整数, 但其地址不是4的倍数。它与SIGSEGV的区别在于后者是由于对合法存储地址的非法访问触发的(如访问不属于自己存储空间或只读存储空间)。

    SIGFPE
          FPE是floating-point exception(浮点异常)的首字母缩略字。在发生致命的算术运算错误时发出. 不仅包括浮点运算错误, 还包括溢出除数为0等其它所有的算术的错误。SIGFPE的符号常量在头文件signal.h中定义。

    SIGKILL
          用来立即结束程序的运行. 本信号不能被阻塞、处理和忽略。如果管理员发现某个进程终止不了,可尝试发送这个信号,终极大招。

    SIGUSR1
          留给用户使用

    SIGSEGV
          试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.

    SIGUSR2
          留给用户使用

    SIGPIPE
          管道破裂。这个信号通常在进程间通信产生,比如采用FIFO(管道)通信的两个进程,读管道没打开或者意外终止就往管道写,写进程会收到SIGPIPE信号。此外用Socket通信的两个进程,写进程在写Socket的时候,读进程已经终止。

    SIGALRM
          时钟定时信号, 计算的是实际的时间或时钟时间. alarm函数使用该信号.

    SIGTERM
          程序结束(terminate)信号, 与SIGKILL不同的是该信号可以被阻塞和处理。通常用来要求程序自己正常退出,shell命令kill缺省产生这个信号。如果进程终止不了,我们才会尝试SIGKILL。

    SIGCHLD
          子进程(child)结束时, 父进程会收到这个信号。如果父进程没有处理这个信号,也没有等待(wait)子进程,子进程虽然终止,但是还会在内核进程表中占有表项,这 时的子进程称为僵尸进程。这种情 况我们应该避免(父进程或者忽略SIGCHILD信号,或者捕捉它,或者wait它派生的子进程,或者父进程先终止,这时子进程的终止自动由init进程 来接管)。

    SIGCONT
          让一个停止(stopped)的进程继续执行. 本信号不能被阻塞. 可以用一个handler来让程序在由stopped状态变为继续执行时完成特定的工作. 例如, 重新显示提示符

    SIGSTOP
          暂停(stopped)进程的执行. 注意它和terminate以及interrupt的区别:该进程还未结束, 只是暂停执行. 本信号不能被阻塞, 处理或忽略.

    SIGTSTP
          停止进程的运行, 但该信号可以被处理和忽略. 用户键入SUSP字符时(通常是Ctrl+Z)发出这个信号

    SIGTTIN
          当后台作业要从用户终端读数据时, 该作业中的所有进程会收到SIGTTIN信号. 缺省时这些进程会停止执行.
          Unix环境下,当一个进程以后台形式启动,但尝试去读写控制台终端时,将会触发SIGTTIN(读)和SIGTTOU(写)信号量,接着,进程将会暂停(linux默认情况下),read/write将会返回错误。这个时候,shell将会发送通知给用户,提醒用户切换此进程为前台进程,以便继续执行。由后台切换至前台的方式是fg命令,前台转为后台则为CTRL+Z快捷键。
        那么问题来了,如何才能在不把进程切换至前台的情况下,读写控制器不会被暂停?答案:只要忽略SIGTTIN和SIGTTOU信号量即可:signal(SIGTTOU, SIG_IGN)
    stty stop/-stop命令是用于设置收到SIGTTOU信号量后是否执行暂停,因为有些系统的默认行为不一致,比如mac是默认忽略,而linux是默认启用。stty -a可以查看当前tty的配置参数。

    SIGTTOU
        类似于SIGTTIN, 但在写终端(或修改终端模式)时收到。具体见上面SIGTTIN

    SIGURG
        SIGURG, urgent, 紧急的。有”紧急”数据out-of-band数据到达socket时产生.

    SIGXCPU
        超过CPU时间资源限制. 这个限制可以由getrlimit/setrlimit来读取/改变。

    SIGXFSZ
        当进程企图扩大文件以至于超过文件大小资源限制

    SIGVTALRM
        虚拟时钟信号. 类似于SIGALRM, 但是计算的是该进程占用的CPU时间.

    SIGPROF
        类似于SIGALRM/SIGVTALRM, 但包括该进程用的CPU时间以及系统调用的时间.

    SIGWINCH
        Windows Change, 窗口大小改变时发出.

    SIGIO
        文件描述符准备就绪, 可以开始进行输入/输出操作.

    SIGPWR
        Power failure

    SIGSYS
        非法的系统调用。
    
    (1)在以上列出的信号中,程序不可捕获、阻塞或忽略的信号有:SIGKILL,SIGSTOP
    不能恢复至默认动作的信号有:
    SIGILL,SIGTRAP
    默认会导致进程流产的信号有:SIGABRT,SIGBUS,SIGFPE,SIGILL,SIGIOT,SIGQUIT,SIGSEGV,SIGTRAP,SIGXCPU,SIGXFSZ
    默认会导致进程退出的信号有:SIGALRM,SIGHUP,SIGINT,SIGKILL,SIGPIPE,SIGPOLL,SIGPROF,SIGSYS,SIGTERM,SIGUSR1,SIGUSR2,SIGVTALRM
    默认会导致进程停止的信号有:SIGSTOP,SIGTSTP,SIGTTIN,SIGTTOU
    默认进程忽略的信号有:SIGCHLD,SIGPWR,SIGURG,SIGWINCH
    此外,SIGIO在SVR4是退出,在4.3BSD中是忽略;SIGCONT在进程挂起时是继续,否则是忽略,不能被阻塞

 


http://chatgpt.dhexx.cn/article/RRUcvF2j.shtml

相关文章

linux——signal信号(SIGHUP、SIGINT、SIGQUIT、SIGILL、SIGTRAP、SIGABRT...........................)

SIGHUP /* hangup */ ~~~~~~ SIGHUP,hong up ,挂断。本信号在用户终端连接(正常或非正常)结束时发出, 通常是在终端的控制进程结束时, 通知同一session内的各个作业, 这时它们与控制终端不再关联。 ~~~~~~ 登录Linux时,系统会分配给登录用户…

CANopen DS402 驱动电机运动控制与顺序功能图SFC设计方法

总线型步进电机驱动器 总线型步进电机驱动器是一个总的概括, 物理总线逻辑通信协议RS-485Modbus/RTUCANbusCANopenEthernetEtherNET/IPEtherneteSCL工业以太网PROFINET 其涉及基于RS-485的Modbus/RTU协议、基于CANbus 的 CANopen 协议、 基于 Ethernet 的 Ether…

CANopen dsp402 对象字典 603F 错误码

Object 603Fh: Error code The Error code captures the code of the last error that occurred in the drive. It corresponds to the value of the lower 16 bits of object 1003h pre-defined error field.

新魔百和九联UNT402A-免拆机-刷机固件及教程

新魔百和九联UNT402A-免拆机-刷机固件及教程 步骤一:【打开adb功能】 将机顶盒插入网线连接电视并开机--然后准备一个USB键盘插入机顶盒,然后机顶盒开机1分钟后,按USB键盘上的F7和F8按钮 两个按钮交替按,随后弹出一个界面&#x…

EtherCAT从站协议栈代码笔记之cia402appl.c

原文:https://nobuta.blog.csdn.net/article/details/82425552?utm_mediumdistribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-10.control&dist_request_id&depth_1-utm_sourcedistribute.pc_relevant.none-…

汇川AM402、H3U和上位机C#ModebusTcp通讯

目录 一、测试任务 二、测试环境 三、PLC工程 1、组态配置 2、ip地址、端口号 3、全局变量定义 四、C#端Winform程序创建 1创建主界面 2、创建子窗口 3、运行生成,界面效果 4、Modebus协议说明 5、Modebus操作说明 六、AM402测试 1、寄存器读测试 2、MW1…

新魔百和UNT402A免拆机破解(附教程)

九联UNT402A刷机教程指南 今天跟大家分享下关于九联UNT402A刷机教程, UNT402A与UNT之前型号有明显区别, 就是采用的处理器不在是海思处理器, 取而代之的是晶晨处理器,下面讲讲如何刷机 下载地址: 百度链接&#xff1…

重新激活“HTTP错误代码402”,释放Web 3.0的潜力(上)

发表时间:2022年2月28日 信息来源:coingeek.com 原文作者:Jerry Chan 是时候夺回互联网了。 在这个互联网充斥着广告和恶意软件的时代,个人数据和网络冲浪历史被收集并贩卖,用以偿付网络上大量免费提供的信息。我们身…

计算机考研402,考研初试402高分复试被淘汰,原来因为这几点被pass掉,以此为戒...

原标题:考研初试402高分复试被淘汰,原来因为这几点被pass掉,以此为戒 近几日,不少高校都已经举行了考研复试,并且已经在官网上公布了录取结果,大家都知道复试是考研的一个关键阶段!加上今年复试…

基于汇川AM402编写跑马灯程序

1、根据实际的设备及组装顺序进行组态。下图是我实际添加设备。 x 2、创建两个程序组织单元,PLC_PRG和POU。在程序组织单元PLC_PRG下添加两个动作“跑马灯”和“跑马灯2”,然后再将程序组织单元POU添加进任务当中。 在动作“跑马灯”下编写程序&#x…

汇川AM402和串口调试助手自由协议通信

1、硬件说明 PLC:汇川AM402-CPU1608TP PC:串口调试助手 连接:RS485转232、USB转232 如下图所示 PLC的DB9接头2路485接线说明 选择一路使用即可,本测试选择1、2、5引脚 2、PLC工程配置 工程组态 PLC串口接收寄存器&#xf…

FSR402传感器简介

大家好,今天小白给大家介绍一款使用很方便的测压传感器,型号FSR402,欢迎一起交流学习。 一:FSR402简介 FSR402是著名Interlink Electronics 公司生产的一款重量轻,体积小,感测精度高,超薄型电…

【无刷直流电机】【DS402协议】学习记录

DS402是建立在DS301(DS301就是一个通讯协议栈)基础之上的伺服类控制协议。 ds402.c #include <stm32g0xx_hal.h> //Sets up the correct chip specifc defines required by arm_math //#define ARM_MATH_CM4 //#include <arm_math.h>#include <mcpwm.h>#inc…

重新激活“HTTP错误代码402”,释放Web 3.0的潜力(下)

发表时间&#xff1a;2022年3月7日 信息来源&#xff1a;coingeek.com 原文作者&#xff1a;Jerry Chan 在上一篇文章中&#xff0c;我们概述了Web 3.0的潜力&#xff0c;也就是为互联网提供了一个变现层级。我们还略加提及了IPv6将为这种全新的互联网模式带来的可能性。那么&a…

CANOPEN使用心得1-cia301、cia402简单提要

canopen简单提要 can总线 can特点&#xff1a;多主控制、高达1M通讯速度、通讯校验、 错误检测处理及恢复等&#xff0c;can总线通讯接口规定了CAN协议的物理层和数据链路层功能。 canopen协议 canopen协议属于应用层协议&#xff0c;是由一系列子协议组成&#xff0c;分为通…

CiA402驱动架构

原文&#xff1a;https://blog.csdn.net/huangxianxinalice/article/details/8706684 自version4.30以后的SSC都包含有一个简单的CiA402驱动架构的应用程序&#xff08;如[1]描述&#xff09;。这个应用提供了一个接口在电机控制程序和通信层之间。 下面的特性被支持 - CiA4…

计算机考研402,考研402分经验谈

考研402分经验谈 作者 小坦克 次阅读 2008-05-13 考研是个痛苦却充实的过程。尤其对我而言。 我考的是哈尔滨工业大学企业管理专业。总分402&#xff0c;英语82&#xff0c;政治80&#xff0c;数学三111&#xff0c;专业课129. 我是07级毕业生。本来应该得到系里保送研究生得机…

语音数据采集-实时语音数据可视化

1、安装依赖 pip install pyaudiopip install pylab 2、语音数据展示 import pyaudioimport numpy as np CHUNK 4096 # 每次采集的数据点数RATE 44100 # 采样频率 ppyaudio.PyAudio() # 启动类streamp.open(formatpyaudio.paInt16,channels1,rateRATE,inputTrue, …

Speech | 提取语音(数据集)的语音特征合集

本文主要讲解了提取数据集的一些主要工具&#xff0c;以及如何使用这些工具&#xff0c;包含安装以及运行命令。 提取语音&#xff08;数据集&#xff09;的语音特征工具&#xff08;Extract audio features toolkits&#xff09; • openSMILE • COVAREP • ESPNet • YAAF…

简单的语音数据集制作方案

众所周知&#xff0c;深度学习现阶段还是以数据为驱动&#xff0c;然后我们需要simsiam等的自监督算法来自动标注数据集以及特征&#xff0c;但是初始阶段还是回到我们的音频数据本身。 我们提取音频特征有数种方式&#xff0c;首先是可以直接进行音频波形的提取&#xff1a; …