Shell 信号发送与捕捉
1、Linux信号类型
信号(Signal):信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行相应的处理函数。
进程可以通过三种方式来响应一个信号:
1)忽略信号,即对信号不做任何处理,其中有两个信号不能忽略:SIGKILL及SIGSTOP。
2)捕捉信号。
3)执行缺省操作,Linux对每种信号都规定了默认操作。
Linux究竟采用上述三种方式的哪一个来响应信号呢?取决于传递给响应的API函数。
Linux支持的信号有:
编号 |
信号名称 |
缺省动作 |
描述 |
1 |
SIGHUP |
终止 |
终止进程,挂起 |
2 |
SIGINT |
终止 |
键盘输入中断命令,一般是CTRL+C |
3 |
SIGQUIT |
CoreDump |
键盘输入退出命令,一般是CTRL+\ |
4 |
SIGILL |
CoreDump |
非法指令 |
5 |
SIGTRAP |
CoreDump |
trap指令发出,一般调试用 |
6 |
SIGABRT |
CoreDump |
abort(3)发出的终止信号 |
7 |
SIGBUS |
CoreDump |
非法地址 |
8 |
SIGFPE |
CoreDump |
浮点数异常 |
9 |
SIGKILL |
终止 |
立即停止进程,不能捕获,不能忽略 |
10 |
SIGUSR1 |
终止 |
用户自定义信号1,像Nginx就支持USR1信号,用于重载配置,重新打开日志 |
11 |
SIGSEGV |
CoreDump |
无效内存引用 |
12 |
SIGUSR2 |
终止 |
用户自定义信号2 |
13 |
SIGPIPE |
终止 |
管道不能访问 |
14 |
SIGALRM |
终止 |
时钟信号,alrm(2)发出的终止信号 |
15 |
SIGTERM |
终止 |
终止信号,进程会先关闭正在运行的任务或打开的文件再终止,有时间进程在有运行的任务而忽略此信号。不能捕捉 |
16 |
SIGSTKFLT |
终止 |
处理器栈错误 |
17 |
SIGCHLD |
可忽略 |
子进程结束时,父进程收到的信号 |
18 |
SIGCONT |
可忽略 |
让终止的进程继续执行 |
19 |
SIGSTOP |
停止 |
停止进程,不能忽略,不能捕获 |
20 |
SIGSTP |
停止 |
停止进程,一般是CTRL+Z |
21 |
SIGTTIN |
停止 |
后台进程从终端读数据 |
22 |
SIGTTOU |
停止 |
后台进程从终端写数据 |
23 |
SIGURG |
可忽略 |
紧急数组是否到达socket |
24 |
SIGXCPU |
CoreDump |
超出CPU占用资源限制 |
25 |
SIGXFSZ |
CoreDump |
超出文件大小资源限制 |
26 |
SIGVTALRM |
终止 |
虚拟时钟信号,类似于SIGALRM,但计算的是进程占用的时间 |
27 |
SIGPROF |
终止 |
类似与SIGALRM,但计算的是进程占用CPU的时间 |
28 |
SIGWINCH |
可忽略 |
窗口大小改变发出的信号 |
29 |
SIGIO |
终止 |
文件描述符准备就绪,可以输入/输出操作了 |
30 |
SIGPWR |
终止 |
电源失败 |
31 |
SIGSYS |
CoreDump |
非法系统调用 |
CoreDump(核心转储):当程序运行过程中异常退出时,内核把当前程序在内存状况存储在一个core文件中,以便调试。
Linux支持两种信号:
一种是标准信号,编号1-31,称为非可靠信号(非实时),不支持队列,信号可能会丢失,比如发送多次相同的信号,进程只能收到一次,如果第一个信号没有处理完,第二个信号将会丢弃。
另一种是扩展信号,编号32-64,称为可靠信号(实时),支持队列,发多少次进程就可以收到多少次。
信号类型比较多,我们只要了解下,记住几个常用信号就行了,红色标记的我觉得需要记下。
发送信号一般有两种情况:
一种是内核检测到系统事件,比如键盘输入CTRL+C会发送SIGINT信号。
另一种是通过系统调用kill命令来向一个进程发送信号。
2、kill命令
kill命令发送信号给进程。
命令格式:kill [-s sigspec | -n signum | -sigspec] pid | jobspec ...
kill -l [sigspec]
-s # 信号名称
-n # 信号编号
-l # 打印编号1-31信号名称
Shell 信号发送与捕捉相关推荐
- linux 信号 core,Shell 信号发送与捕捉
原标题:Shell 信号发送与捕捉 作者:李振良OK 1.Linux信号类型 信号(Signal):信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行相应的处理函数. 进程可以通过三 ...
- 第九章 Shell信号发送与捕捉
9.1 Linux信号类型 信号(Signal):信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行相应的处理函数. 进程可以通过三种方式来响应一个信号: 1)忽略信号,即对信号不做 ...
- sigquit信号默认忽略吗_老妹儿,你真的搞懂了 Shell 信号吗?
作者:李振良OK链接:https://blog.51cto.com/lizhenliang/1899347 哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你手里 ...
- linux系统发送信号的系统调用是,linux系统编程之信号:信号发送函数sigqueue和信号安装函数sigaction...
信号发送函数sigqueue和信号安装函数sigaction sigaction函数用于改变进程接收到特定信号后的行为. sigqueue()是比较新的发送信号系统调用,主要是针对实时信号提出的(当然 ...
- qt信号发送间隔短而槽耗时多_Qt信号槽问题汇总 - osc_9q1dp3jk的个人空间 - OSCHINA - 中文开源技术交流社区...
1. 发送一次信号,调用多次槽函数问题 在同一个类中,多次链接QObject::connect(sender, SIGNAL(signalSender(QString, int)), receiver ...
- Linux信号 三 信号发送接口集合
信号发送接口包括raise,kill,killpg,tkill,tgkill,pthread_kill,sigqueue等. 1. raise() /*** raise用于向进程自身发送信号* 成功返 ...
- 查看当前服务器中的所有的topic,创建topic,删除topic,通过shell命令发送消息,通过shell消费消息,查看topic详情,对分区数进行修改
一. Kafka常用操作命令 查看当前服务器中的所有topic [root@hadoop3 kafka]# bin/kafka-topics.sh --list --zookeeper hadoo ...
- linux普通用户发送信号,Linux信号发送与作业控制
前言 Linux中进程间通信又称为IPC(Inter process communication),大致上可以分为这么几类:消息队列(message queue),旗语(semerpore),共享内存 ...
- ping端口怎么ping_英雄联盟手游ping信号怎么发送 ping信号发送方法介绍_游戏攻略...
伙伴不知道英雄联盟手游ping信号是什么意思?怎么发,在英雄联盟手游中每个信号都是至关重要的,作为一个召唤师不会发信号,那可是一件大事,下面小编就给大家带来<英雄联盟手游>ping信号发送 ...
最新文章
- 携程python_Python 携程
- Keras 文本预处理 text sequence
- 智迪科技携手海通安恒,启动SAP实施项目
- 网页静态化和网页伪静态化之间的区别与选择
- 【异或运算】 - 交换2个数
- x86架构下 CF与OF标志位 带符号和无符号运算 详解
- 前端学习(3001):vue+element今日头条管理--项目初始化总结
- T-SQL DML学习笔记
- 邮件格式转换html,HTML邮件模板 - lenglingx的个人页面 - OSCHINA - 中文开源技术交流社区...
- 使用GDAL对HDF数据进行校正
- 二十余岁时的社会观(三)
- 蓝牙服务器维修理地址,云服务器蓝牙
- 系统镜像ISO、GHO、WIM、ESD的区别
- ❤️❤️❤️Unity废柴看过来,手把手教你做植物大战僵尸(十七)—— 工程源码下载
- C++写文件时覆盖与否的问题
- 通用公司信息安全规范
- SAP那些事-职业篇-10-顾问最重要的思维方式
- InfluxDB学习整理
- Unity动画☀️7. 通过MatchTarget匹配跳墙动画、Vector3、获取动画层GetCurrentAnimatorStateInfo(a).IsName(b)
- 打开Microsoft Outlook时出现意外错误如何解决?
热门文章
- 史上最详细的值传递和引用传递之间区别
- php 数组排序 按值,php – 按值排序数组
- 双百双新产业项目是什么_投资380亿,广西38个“双百双新”产业项目开竣工
- php生成10万个字符串,有什么好的方法可以生成十万条不重复的13位纯数字字符串...
- syslog 向内存中缓存_动画:深入浅出从根上理解 HTTP 缓存机制及原理!
- docker 拉取oracle_Docker 拉取 oracle 11g镜像配置-Go语言中文社区
- python 数组转音频_Python3+将2声道音频,分拆成1声道
- 查询linux上调度命令,浅析Linux中crontab任务调度
- 查看网卡命令 uefi_大神教你开机进入UEFI模式的方法,非常简单
- vb用adodb链接mysql找不到_VB使用ADODB操作数据库的常用方法