也许有一些同学有这样的疑问:

kill -9 PID 中的 -9 到底是什么意思?

Ctrl + C 是为什么可以停止掉运行的程序?

1. 什么是信号?

在计算机科学中,信号是Unix、类Unix以及其他POSIX兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时,任何非原子操作都将被中断。如果进程定义了信号的处理函数,那么它将被执行,否则就执行默认的处理函数。

Linux下可能通过 kill -l 命令查看所有信号

2. 信号的处理

信号是linux所使用的进程间通信的最古老的方式。它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式 。一个完整的信号周期包括三个部分,信号的产生,信号在进程中的注册,信号在进程中的注销,执行信号处理函数。如下图所示:

注意:这里信号的产生,注册,注销是信号的内部机制,而不是信号的函数实现。

对信号的响应由三种方式:

1、忽略信号,即对信号不做任何的处理。但SIGKILL和SIGSTOP不能忽略。

2、捕捉该信号,定义信号处理函数,当信号发生时,执行信号处理函数。

3、执行缺省操作,linux对每种信号都有默认的操作。

附录:常见操作相关的信号

命令 kill PID 默认使用的是 -15 即 SIGTERM 信号

按键 Ctrl-C 发送信号 -2 即 SIGINT

按键 Ctrl-Z 发送信号 -20 即 SIGTSTP (注意不是 SIGSTOP ,TSTP是指terminal stop,通常程序会后台运行,使用fg命令可恢复)

读者思考

1. kill -9 PID 中的 -9 到底是什么意思?kill不指定默认是什么信号?

2. Ctrl + C 是为什么可以停止掉运行的程序?程序中能忽略Ctrl-C操作么?

3. 自己动手写一个小程序,捕获一下信号进行处理?

4. uwsgi / nginx中实现 reload 或 restart 用信号机制了么,用的什么信号?

linux 信号_[入门]谈一谈Linux中的信号相关推荐

  1. 树莓派怎么学linux,树莓派使用入门用树莓派学 Linux

    树莓派使用入门用树莓派学 Linux 我们的<树莓派使用入门>的第四篇文章将进入到 Linux 命令行. 在本系列的 第三篇文章 中开始了我们的树莓派探索之旅,我分享了如何安装 Raspb ...

  2. uefi启动linux过程_【转载】简述Linux的启动过程

    本文将简单介绍一下Linux的启动过程,希望对那些安装Linux的过程中遇到了问题的朋友有些帮助 声明:本人没用过UEFI模式和GPT分区格式,所有关于这两部分的内容都是网络上找的资料,仅供参考. 典 ...

  3. ac3165 linux驱动_一文读懂Linux系统启动流程

    Linux启动管理 11.1 CentOS 6.x系统启动过程详解 CentOS 6.x系统启动过程发生了较大的变化,使用Upstart启动服务取代了原先的System V init启动服务.Upst ...

  4. 串行和并行的区别_入门参考:从Go中的协程理解串行和并行

    本文转自公众号语言随笔,欢迎关注 入门参考:从Go中的协程理解串行和并行​mp.weixin.qq.com Go语言的设计亮点之一就是原生实现了协程,并优化了协程的使用方式.使得用Go来处理高并发问题 ...

  5. 服务器运维用macos,MacOS和Linux区别_网站服务器运行维护,linux,macos

    MacOS catalina升级后Vmware黑屏的问题解决_网站服务器运行维护 macOS Catalina是苹果macOS全新版本.本文就来为大家介绍一下MacOS catalina升级后Vmwa ...

  6. linux 故障注入_用软件中断实现的Linux内核故障注入方法

    用软件中断实现的 Linux 内核故障注入方法 郭庆伟 ; 杨麦顺 ; 张影 ; 张兴军 [期刊名称] <计算机应用> [年 ( 卷 ), 期] 2014(000)0z2 [摘要] 针对容 ...

  7. linux桌面_使用 KDE Plasma 定制 Linux 桌面 | Linux 中国

    本文是 24 天 Linux 桌面特别系列的一部分.如果你认为没有太多自定义桌面的需要,KDE Plasma 可能适合你.-- Seth Kenlon KDE 社区的 Plasma 桌面是开源桌面环境 ...

  8. linux加权_「学员笔记」LINUX随堂笔记(十一):LVS负载均衡群集

    第12章 LVS负载均衡群集 一.群集概述 1.1 群集的类型 无论是哪种群集,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机,根据群集所提 ...

  9. 用 u盘装linux系统怎么安装,怎么用U盘安装Linux系统_用U盘安装Linux系统的另类技巧 - 软件教程 - 格子啦...

    Windows系统在操作系统中占据着主流的位置,很多用户也都已经习惯了Windows系列的操作界面,但是每天面对着同样的操作界面也会很厌烦,所以不妨来为你的电脑换个不一样的操作系统,尝试一下不一样的操 ...

最新文章

  1. Java 最高均薪 19015 元! 9 月程序员工资出炉,你拖后腿了吗?
  2. extjs 验证消息不显示
  3. [转载][QT][SQL]sql学习记录3_sqlite之update delete like
  4. TensorFlow中的Nan值的陷阱
  5. php点击按钮查询,管理界面点击按钮打开查询功能
  6. oracle until freed,ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法...
  7. python全栈和java全栈_Python是全栈式开发语言吗?原因竟是这样!
  8. java filter重定向_Java Filter(过滤器)——重定向
  9. Centos:更换为网易镜像源
  10. C语言经典100道编程练习题
  11. 计算机地图制图的点状符号制作,计算机地图制图地图符号库系统建立.doc
  12. 微信小程序弹框的使用
  13. orangepi pc GPIO 管脚图
  14. js三座大山----(第三座山)
  15. shineblink LD3320A语音识别
  16. 设置手机静音和固定电话来电时手机震动
  17. 【深度学习】深度学习:技术原理、迭代路径与局限
  18. 十万部冷知识:“沙特”为什么能赢“阿根廷”
  19. VPS是干嘛用的?有哪些知名牌子?与云服务器有什么区别?
  20. Android 下简单的 MP3 播放(代码分析)

热门文章

  1. WCF中使用HttpSession
  2. 2010软考软件设计师冲刺精选【专家压轴模拟•下】
  3. RedHat Linux 7.3基础环境搭建
  4. 网络爬虫--15.【糗事百科实战】多线程实现
  5. 学成在线--6.CMS页面管理开发(删除页面)
  6. 集合添加元素python_Python 集合(Set)
  7. tbase同步mysql_mysql主从同步
  8. python 多线程并发_寻找python大神!!!python如何多线程并发?
  9. python查询斐波那契数列通项公式_分享一个神奇的操作系统——斐波那契+MACD,每一波都有20%以上的收益!...
  10. 获取系统信息2——linux中使用随机数