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. vue点击实现 路由的跳转

    点击按钮实现路由的跳转 <div @click="gotoMenu">按钮</div> 实现跳转 methods: { gotoMenu(){ //跳转到上 ...

  2. 【剑指Offer】 24、二叉树中和为某一值的路径

      题目描述:   输入一颗二叉树的根结点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中, ...

  3. /proc/sys/vm man手册

    Manual page proc(5) line 1967 (press h for help or q to quit) /proc/sys/vm This directory contains f ...

  4. 进程映射、mmap(day05)

    一.内存管理(续) 每个进程都有自己独立的4G的虚拟地址空间. 冯.诺伊曼体系结构 哈佛体系结构 section 代码段 只读数据段 栈段 举例说明 数据所属的段. 代码参见 memory.c 如何获 ...

  5. 【Codeforces 903B】The Modcrab

    [链接] 我是链接,点我呀:) [题意] [题解] 显然如果对方一次攻击能打死你. 那么你不能对他攻击了.必须加血.其他时候都只要攻击就可以了. 但也不一定非得加血. 因为有时候可以"绝杀& ...

  6. Mahmoud and a Dictionary

    Mahmoud and a Dictionary time limit per test 4 seconds memory limit per test 256 megabytes input sta ...

  7. (25)Spring Boot使用自定义的properties【从零开始学Spring Boot】

    spring boot使用application.properties默认了很多配置.但需要自己添加一些配置的时候,我们应该怎么做呢. 若继续在application.properties中添加 如: ...

  8. 【ACM】hdu_zs2_1005_Problem E _201308030747

    Problem E Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)Total Subm ...

  9. [jQuery]$.get跨域提交不发送原因

    使用 $.ajax({ url: "http://pastebin.com/embed_js.php?i=sy9gt3FR", dataType: "jsonp" ...

  10. 【MVC框架】——什么是MVC框架

    学习了经典三层之后,认为不论什么一种框架都不再是难的.不管如何,都须要连接数据库.业务逻辑处理.显示.其余的无非就是给三层解耦合.解耦合越到位,这个框架就越easy被接受. 百度百科:MVC全名是Mo ...