linux的信号来源
1.由一个进程发给另一个进程(或本身)
2.内核发给进程
信号的特征
异步的,分为可靠信号和不可靠信号。
进程收到信号时怎么处理
1.执行信号处理程序
2.如果收到信号时处在一个阻塞函数中,中断当前系统调用并执行信号处理程序
3.如果想要信号处理程序后恢复被中断的系统调用,需要设置SA_RESTART标志,是否奏效依赖于不同的系统。
信号的三种处理方式
1.自定义处理动作,并通过signal或者sigaction将自定义信号处理函数和信号关联起来。
2.设置信号的处理动作为SIG_IGN来忽略它
3.设置信号的处理动作为SIG_DFL,采用默认处理动作,默认处理动作一般是退出进程,也有的是产生core文件,还有的信号是忽略掉。
SIGKILL和SIGSTOP不能被捕捉,也不能被自定义处理和忽略处理。
信号处理程序会不会被信号打断
1.posix允许我们定义一组信号,当信号处理程序被调用时阻塞它们。任何阻塞的信号不能被递交给进程,posix保证信号处理程序运行时被捕获的信号是阻塞的。
2.linux保证信号处理程序不会被另一个信号打断
不可靠信号和可靠信号的差别
是否排队,不可靠信号会把相同信号合并为一个,而可靠信号会把收到的信号排队。当信号产生的速度大于信号处理的速度,不可靠信号会丢失信号。
信号的应用
信号处理函数不要调用不可重入函数,比如标准库的printf、malloc等,尽量简单点,不做实际工作,比如设置进程退出flag,合适退出交给线程和进程判断flag并在合适时候退出。

慢系统调用需要处理的信号中断错误
当一个慢系统调用被信号打断时,会返回EINTR作为返回值,这不是错误,需要再次调用该系统调用。
大多数网络的阻塞调用:accept、read都属于慢系统调用。

LINUX的signal的更多相关文章

  1. linux信号Linux下Signal信号太详细了,终于找到了

    linux信号Linux下Signal信号太详细了,终于找到了 http://www.cppblog.com/sleepwom/archive/2010/12/27/137564.html

  2. Linux 信号signal处理机制

    信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念.Linux对信号机制的大致实现方法.如何使用信号,以及有关信号的几个系统调用. 信号机制是进程之间相互传递消息的一种方法,信号全 ...

  3. 非常好的一篇对linux信号(signal)的解析 (转载)【转】

    转自:https://blog.csdn.net/return_cc/article/details/78845346 Linux信号(signal) 机制分析 转载至:https://www.cnb ...

  4. Linux信号(signal)机制【转】

    转自:http://gityuan.com/2015/12/20/signal/ 信号(signal)是一种软中断,信号机制是进程间通信的一种方式,采用异步通信方式 一.信号类型 Linux系统共定义 ...

  5. linux下 signal信号机制的透彻分析与各种实例讲解

    转自:http://blog.sina.com.cn/s/blog_636a55070101vs2d.html 转自:http://blog.csdn.net/tiany524/article/det ...

  6. Linux下signal信号汇总

    SIGHUP /* Hangup (POSIX). */ 终止进程 终端线路挂断 SIGINT /* Interrupt (ANSI). */ 终止进程 中断进程 Ctrl+C SIGQUIT /* ...

  7. linux 信号signal和sigaction理解

    今天看到unp时发现之前对signal到理解实在浅显,今天拿来单独学习讨论下. signal,此函数相对简单一些,给定一个信号,给出信号处理函数则可,当然,函数简单,其功能也相对简单许多,简单给出个函 ...

  8. Linux 信号signal处理函数

    转自:http://www.cnblogs.com/taobataoma/archive/2007/08/30/875662.html alarm(设置信号传送闹钟) 相关函数 signal,slee ...

  9. [Linux]Linux下signal function传参方式

    https://stackoverflow.com/questions/6970224/providing-passing-argument-to-signal-handler This is a r ...

随机推荐

  1. js中的数组遍历

    js中的数组遍历是项目中经常用到的,在这里将几种方法做个对比. ! for循环:使用评率最高,也是最基本的一种遍历方式. let arr = ['a','b','c','d','e']; for (l ...

  2. eas之设置编辑界面分录的某一列不可编辑

    KDTEntrys.getColumn(“xx”).getStayAttributes().setlokced(true);

  3. Hexo系列(五) 撰写文章

    在利用 Hexo 框架搭建一个属于我们自己的博客网站后,下面我们就来谈谈怎样在网站上书写我们的第一篇博客吧 一.创建文章 在站点文件夹中打开 git bash,输入如下命令创建文章,其中 title ...

  4. Django-xadmin+django-import-export导入导出的实现

    转载自:https://blog.csdn.net/zcyuefan/article/details/77748850 1. 需求vs现状1.1 需求要求做一个ERP后台辅助管理的程序,有以下几项基本 ...

  5. 手写DAO框架(四)-SQL执行

    -------前篇:手写DAO框架(三)-数据库连接--------- 前言 通过上一篇写的方法,可以灵活的获取.释放数据库连接,拿到连接之后,我们就可以执行sql了!所以,本篇介绍的就是SQL执行器 ...

  6. lucene_04_解析语法查询

    解析语法查询就是调用方法查询的原始查询 例如: 查询所有的查询器的语法为:*:*,因为lucene查询是根据term来做的,既是:key:value类型.*:*表示所有域中的所有值. api调用语法解 ...

  7. 0923关于安装mysql两种简单方式

    http://blog.csdn.net/liumm0000/article/details/18841197 方式一:利用RPM安装包进行安装 RPM方式安装MySQL5.6 RPM方式安装MySQ ...

  8. js为字符串编码

    js 提供了两组函数来进行字符串的编码与解码:escape()与unescape(). decodeURI()与encodeURI(); JavaScript escape() 函数 定义和使用方法 ...

  9. Node.js具体解析

    介绍 JavaScript 高涨的人气带来了非常多变化.以至于现在使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也能够在server上执行 JavaScript ,从前端跨越 ...

  10. 【传智播客VIP用户专享】Swift教程最新更新

    (1)[传智播客VIP用户专享]Swift教程最新更新 特地贡献出来忘帮顶!!(传智内部学院给的) http://pan.baidu.com/s/1jGmRRIu    提取码:i11g 相关资料下载 ...