美文网首页
linux多线程的信号处理

linux多线程的信号处理

作者: grimlock44 | 来源:发表于2018-08-13 08:48 被阅读0次

3条原则:
1:如果是异常产生的信号(比如程序错误,像SIGPIPE、SIGEGV这些),则只有产生异常的线程收到并处理
2:如果是用pthread_kill产生的内部信号,则只有pthread_kill参数中指定的目标线程收到并处理。
3:如果是外部使用kill命令产生的信号,通常是SIGINT、SIGHUP等job control信号,则会遍历所有线程,直到找到一个不阻塞该信号的线程,然后调用它来处理。(一般从主线程找起),注意只有一个线程能收到。

重点:每个线程都有自己独立的signal mask,但所有线程共享进程的signal action。详解如下:
1:子线程的signal mask是会从主线程继承而来的,可以在线程中调用pthread_sigmask来修改本线程阻塞哪些信号。
2:signal action只有一份 共享的 不能调用sigaction来指定单个线程的信号处理方式。

来源:https://www.cnblogs.com/coding-my-life/p/4782529.html

相关文章

  • linux多线程的信号处理

    3条原则:1:如果是异常产生的信号(比如程序错误,像SIGPIPE、SIGEGV这些),则只有产生异常的线程收到并...

  • Linux 信号(signal)

    对于 Linux来说,实际信号是软中断,许多重要的程序都需要处理信号。信号,为 Linux 提供了一种处理异步事件...

  • 学习笔记5

    Linux多线程同步机制 - 信号量信号量函数定义如下:include int semctl(int sem_i...

  • Linux进程间通信- signal信号的捕捉与sigactio

    Linux进程间通信- signal信号的捕捉与sigaction函数 前面有提到Linux中信号的处理动作是用户...

  • linux -09 - 信号(1)

    Unix/Linux的信号处理 信号(signal)就是Unix/Linux系统中最常见的一种软件中断的方式。中断...

  • Linux开发之崩溃处理

    Linux开发之崩溃处理 注册信号的处理函数EnableCrashHandler 崩溃处理函数OnCrashHan...

  • Linux 线程信号

    1. 线程信号原理 在多线程环境下,信号处理函数是多个线程共有的,若一个线程修改信号处理函数,则所有的线程均会受到...

  • TCP滑动窗口

    一、复习review 1.1 多进程和多线程的对比 多线程模型需要处理SIGPIPE信号,因为多次去写就会触发SI...

  • linux 信号机制

    1. Linux支持的信号列表如下。很多信号是与机器的体系结构相关的 信号值 默认处理动作 发出信号的原因 SIG...

  • 多线程编程

    多线程编程之Linux环境下的多线程(一)多线程编程之Linux环境下的多线程(二)多线程编程之Linux环境下的...

网友评论

      本文标题:linux多线程的信号处理

      本文链接:https://www.haomeiwen.com/subject/bdkkbftx.html