sigquit信号默认忽略吗_老妹儿,你真的搞懂了 Shell 信号吗?

27fedcce78b34678fff7c85fdd414278.png

作者:李振良OK链接:https://blog.51cto.com/lizhenliang/1899347

哈喽,各位新来的小伙伴们,大家好!由于公众号做了改版,为了保证公众号的资源能准时推送到你手里,大家记得将咱们的公众号 加星标置顶 ,在此真诚的表示感谢~

f943f22a5be5a23c9db1e2aea2c0094a.png正文如下:

# Linux信号类型

信号(Signal):信号是在软件层次上对中断机制的一种模拟,通过给一个进程发送信号,执行相应的处理函数。进程可以通过三种方式来响应一个信号:1)忽略信号,即对信号不做任何处理,其中有两个信号不能忽略:SIGKILL及SIGSTOP。2)捕捉信号。3)执行缺省操作,Linux对每种信号都规定了默认操作。Linux究竟采用上述三种方式的哪一个来响应信号呢?取决于传递给响应的API函数。Linux支持的信号有:
编号信号名称缺省动作描述
1SIGHUP终止终止进程,挂起
2SIGINT终止键盘输入中断命令,一般是CTRL+C
3SIGQUITCoreDump键盘输入退出命令,一般是CTRL+\
4SIGILLCoreDump非法指令
5SIGTRAPCoreDumptrap指令发出,一般调试用
6SIGABRTCoreDumpabort(3)发出的终止信号
7SIGBUSCoreDump非法地址
8SIGFPECoreDump浮点数异常
9SIGKILL终止立即停止进程,不能捕获,不能忽略
10SIGUSR1终止用户自定义信号1,像Nginx就支持USR1信号,用于重载配置,重新打开日志
11SIGSEGVCoreDump无效内存引用
12SIGUSR2终止用户自定义信号2
13SIGPIPE终止管道不能访问
14SIGALRM终止时钟信号,alrm(2)发出的终止信号
15SIGTERM终止终止信号,进程会先关闭正在运行的任务或打开的文件再终止,有时间进程在有运行的任务而忽略此信号。不能捕捉
16SIGSTKFLT终止处理器栈错误
17SIGCHLD可忽略子进程结束时,父进程收到的信号
18SIGCONT可忽略让终止的进程继续执行
19SIGSTOP停止停止进程,不能忽略,不能捕获
20SIGSTP停止停止进程,一般是CTRL+Z
21SIGTTIN停止后台进程从终端读数据
22SIGTTOU停止后台进程从终端写数据
23SIGURG可忽略紧急数组是否到达socket
24SIGXCPUCoreDump超出CPU占用资源限制
25SIGXFSZCoreDump超出文件大小资源限制
26SIGVTALRM终止虚拟时钟信号,类似于SIGALRM,但计算的是进程占用的时间
27SIGPROF终止类似与SIGALRM,但计算的是进程占用CPU的时间
28SIGWINCH可忽略窗口大小改变发出的信号
29SIGIO终止文件描述符准备就绪,可以输入/输出操作了
30SIGPWR终止电源失败
31SIGSYSCoreDump非法系统调用
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信号名称示例:
给一个进程发送终止信号:kill -s SIGTERM pid或kill -n 15 pid或kill -15 pid或kill -TREM pid

3、trap命令

trap命令定义shell脚本在运行时根据接收的信号做相应的处理。命令格式:trap [-lp] [[arg] signal_spec ...]-l          #打印编号1-64编号信号名称arg         # 捕获信号后执行的命令或者函数signal_spec # 信号名或编号一般捕捉信号后,做以下几个动作:1)清除临时文件2)忽略该信号3)询问用户是否终止脚本执行示例1:按CTRL+C不退出循环
#!/bin/bashtrap "" 2    # 不指定arg就不做任何操作,后面也可以写多个信号,以空格分隔 for i in {1..10}; do   echo $i   sleep 1done# bash a.sh123^C456^C78910
示例2:循环打印数字,按CTRL+C退出,并打印退出提示
#!/bin/bashtrap "echo 'exit...';exit" 2for i in {1..10}; do   echo  $i   sleep  1done # bash test.sh123^Cexit...
示例3:让用户选择是否终止循环
#!/bin/bashtrap "func" 2func() {   read -p "Terminate theprocess? (Y/N): " input   if [ $input == "Y"] ; then        exit    fi } for i in {1..10}; do   echo $i   sleep 1done # bash a.sh123^CTerminate the process? (Y/N): Y# bash a.sh 123^CTerminate the process? (Y/N): N456...
热门推荐:
  • 牛逼!竟然纯Java打造一款SSH客户端,而且已开源~
  • 推荐一款牛逼的IDEA神器,再也不怕女同事用“烂代码”来偷袭我啦~
  • Github 2020年报告出炉了,你是那只最勤劳的章鱼猫吗?网友:我的项目star数还是0...
ddb2bf6836e5e0832621126e711a0dee.png27ffc61c5776fe9fcfd177f1ad6ab81e.png0b6c2f44ad4d9d6d4388a1aa20ac714c.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

datetimepicker不可以选择当天之前_专访吴京:网上《战狼3》的消息我都不知道,大家可以选择不信...

搜狐娱乐讯 (哈麦/文)在2017爆火的《战狼2》之后,吴京演了《祖宗十九代》《流浪地球》《老师好》《银河补习班》《攀登者》《我和我的祖国》《我和我的家乡》《金刚川》八部电影,但是计划中的《战狼3》一直没有动静。不过,关于《战狼3》&…

机器人蛮王_盖伦:吊打我老婆,蛮王:我也是,他:被老婆打的不敢出塔

相遇就是缘分,你点开了我的文章,小编感到万分荣幸,感谢各位朋友。既然看到了我的文章,就说明我们还是有缘,希望大家可以帮我点点左上角的蓝色字体,小编给大家鞠躬了!LOL如此好玩的原因&#xff…

android serialport new 软件退出_基于Android9.0,了解Android启动流程

先记住四个进程和三种方式。**四个进程**1.Launcher进程2.system_server进程3.App进程4.Zygote进程**三种方式**1.Binder方式2.Socket方式3.Handler方式点击桌面APP图标,Launcher调用startActivitySafely(Launcher进程)java/*** Default laun…

【转】使用命令行方式创建和启动android模拟器

原文网址:http://blog.csdn.net/tiandinilv/article/details/8953001 1、Android模拟器介绍 Android中提供了一个模拟器来模拟ARM核的移动设备。Android的模拟器是基于QEMU开发的,QEMU是一个有名的开源虚拟机项目(详见http://bellard.org/qem…

LPC1768的SPI通讯

SPI是一种全双工串行接口,可处理多个连接到指定总线上的主机和从机。在数据传输过程中总线上只能有一个主机和一个从机通信。在数据传输中,主机总是会向从机发送一帧8到16个位的数据,而从机也总会向主机发送一帧字节数据 使用代码如下 void S…

文本显示变量_几千个IO状态显示.十几分钟搞定实例

工程上常会在一个或者数个界面中对所有IO点监控,很多小伙伴用一一映射的传统方法来实现,在超小型项目中实用性较强,在稍微大一点的项目中实现起来效率低还经常出错。本文旨在分享有价值的实际经验,供小伙伴们参考。在实现监控前要…

TabBarController创建及使用方法简介

TabBarController创建及使用方法简介 大致讲解一下TabBarController的创建过程: 首先,我们需要一些视图,如创建UIControllerView类型的view1,view2,view3. 然后,我们需要创建 一个UITabBarController类型的…

华为gre隧道全部跑静态路由

最终实现: 1、pc1能用nat上网ping能pc3 2、pc1能通过gre访问pc2 3、全部用静态路由做,没有用ospf,如果要用ospf,那么两边除了路由器上跑ospf,核心交换机也得用ospf r2配置: acl number 3000 rule 5 deny…

数组与串,串的实现,KMP,BF算法

数组是一种常用的数据结构,高级语言头提供了支持数组的基本操作,而且数组也是构成其他数据结构的重要组成。 数组是N个相同元素的构成的占用一块地址连续的内存单元的有限序列。 数组的任一个元素都可以用在数组的位置来表示。 数组与线性表区别&#xf…

结对开发——求最大值

一、题目: 返回一个整数数组中最大子数组的和。 要求: 1.输入一个整形数组,数组里有正数也有负数。 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 3.求所有子数组的和的最大值。要求时间复杂度为O(n)。 二…

浏览器获取设备信息_一条命令获取 IE 浏览器保存网站的账号和密码信息

渗透攻击红队一个专注于红队攻击的公众号大家好,这里是 渗透攻击红队 的第 41 篇文章,本公众号会记录一些我学习红队攻击的复现笔记(由浅到深),不出意外每天一更Powershell内网渗透一直以来都是一个热门话题,试想在一个大型的内网…

(转) 一步一步学习ASP.NET 5 (四)- ASP.NET MVC 6四大特性

转发:微软MVP 卢建晖 的文章,希望对大家有帮助。原文:http://blog.csdn.net/kinfey/article/details/44459625 编者语 : 昨晚写好的文章居然csdn不审核,这个也难怪人,但自己比较忙没办法。分享继续&#xf…

win10 python 调用模块_python常识系列14--gt;python通过jpype模块调用jar包

前言能坚持一件事,本身就是一种很了不起的才华。一、jpype模块是什么?能够让 python 代码方便地调用 Java 代码的工具二、jpype模块安装安装和其它模块没区别,但是注意模块名 是 jpype1 ,后面有个1pip install jpype1三、jpype模块…

mysql 载入主体时出错_mysql遇到load data导入文件数据出现1290错误的解决方案

错误出现情景在cmd中使用mysql命令,学生信息表添加数据。使用load data方式简单批量导入数据。准备好文本数据: xueshengxinxi.txt 文件 数据之间以tab键进行分割执行 “load data infile 文本数据路径 into table tab_load_data” 弹出错误。#load d…

【原创】Kakfa utils源代码分析(一)

Kafka.utils,顾名思义,就是一个工具套件包,里面的类封装了很多常见的功能实现——说到这里,笔者有一个感触:当初为了阅读Kafka源代码而学习了Scala语言,本以为Kafka的实现会用到很多函数编程(Functional Pr…

redhad yum 安装mysql_redhat7通过yum安装mysql5.7.17教程

rhel/centos系列linux操作系统自身没有mysql的源,需要自行下载安装。本文介绍如何安装mysql5.7.x数据库。第一步:下载源[rootclient ~]# wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm注意:选择mysql57-community-…

codechef Polo the Penguin and the Tree

一般xor 的题目都是用trie解决。 那这道题是在树上的trie; 首先:从root1,遍历树得到1到所有节点的xor 值。 然后对于每个点我们把其插入二进制树中。 对于每一个点查找其二进值异或值最大的数 依次遍历下来。 注意:边的数量开两倍以上,RE很多…

mysql主从和dump_MySQL主从同步--原理及实现(一)

1、什么是mysql主从同步?当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库。2、主从同步有什么好处?水平扩展数据库的负载能力。容错,高可用。Failover(失败切换)/High Availability数据备份。3、主从同步的原理…

解密多媒体封装解封装框架

上一篇文章我们搭好了环境并编译出所需的ffmpeg库,本篇我们讨论如何利用ffmpeg提供的API函数进行多媒体文件的解封装(demux)过程。在讲解之前,我们需要了解一些基本的多媒体文件知识,大虾请飘过。 容器格式&#xff1a…

bzoj 3611

和BZOJ消耗站一样&#xff0c;先将那个询问的简图构建出来&#xff0c;然后就是简单的树形DP。 &#xff08;倍增数组开小了&#xff0c;然后就狂WA&#xff0c;自己生成的极限数据深度又没有那么高&#xff0c;链又奇迹般正确&#xff09; 1 #include <cstdio>2 #includ…