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. Selenium三种等待的使用方式

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...

  2. [MySQL优化案例]系列 — RAND()优化

    众所周知,在MySQL中,如果直接 ORDER BY RAND() 的话,效率非常差,因为会多次执行.事实上,如果等值查询也是用 RAND() 的话也如此,我们先来看看下面这几个SQL的不同执行计划和 ...

  3. UNIX C 进程Part2

    1.获取进程ID #include <unistd.h> pid_t getpid(void); //获取子进程id pid_t getppid(void);//获取父进程id 2.获取实 ...

  4. IE下自定义错误页面不显示的原因

    如果一个 404 页面的内容小于 512B,IE 会认为该 404 页面不够友好,在 IE 下将不会成功返回该 404 错误页面

  5. 【ZOJ 4070】Function and Function

    [链接] 我是链接,点我呀:) [题意] [题解] 递归一会. 会发现最后肯定是0,1一直循环. 开始循环之后就直接返回结果就好. [代码] #include <bits/stdc++.h> ...

  6. JVM常用参数(内存分配 内存回收日志)

    内存监控  -verbose:gc 测试代码 public static void main(String[] args){ List<Classes> classes=new Array ...

  7. java extend 和 implements 的区别

    1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重 ...

  8. ExtJs之gridPanel的属性表格,编辑表格,表格分页,分组等技巧

    这里藏的配置确实多.. 慢慢实践吧. <!DOCTYPE html> <html> <head> <title>ExtJs</title> ...

  9. C#--async-await的用法

    NET 中的 async/await 异步编程 MSDN上的文章 **async与await最佳实践 需要先理解thread的用法,再掌握task的用法,才能力理解async和await的用法 usi ...

  10. [Javascript Crocks] Flatten Nested Maybes with `chain`

    Sometimes, we run into situations where we end up with a Maybe within the context of another Maybe. ...