signal(7)描述了POSIX.1要求进程共享属性中的所有线程,包括:

信号处理

POSIX.1还要求每个线程都有一些不同的属性,包括:

信号掩码(signal(7))

备用信号堆栈(signal(7))

Linux内核的signal(7)例程具有以下代码块 - 注释非常有用:

/*

* Now find a thread we can wake up to take the signal off the queue.

*

* If the main thread wants the signal, it gets first crack.

* Probably the least surprising to the average bear.

*/

if (wants_signal(sig, p))

t = p;

else if (!group || thread_group_empty(p))

/*

* There is just one thread and it does not need to be woken.

* It will dequeue unblocked signals before it runs again.

*/

return;

else {

/*

* Otherwise try to find a suitable thread.

*/

t = signal->curr_target;

while (!wants_signal(sig, t)) {

t = next_thread(t);

if (t == signal->curr_target)

/*

* No thread needs to be woken.

* Any eligible threads will see

* the signal in the queue soon.

*/

return;

}

signal->curr_target = t;

}

/*

* Found a killable thread. If the signal will be fatal,

* then start taking the whole group down immediately.

*/

if (sig_fatal(p, sig) &&

!(signal->flags & SIGNAL_GROUP_EXIT) &&

!sigismember(&t->real_blocked, sig) &&

(sig == SIGKILL || !p->ptrace)) {

/*

* This signal will be fatal to the whole group.

*/

所以,你看到你负责传递信号的地方:

如果您的进程已将信号的处置设置为signal(7)或SIG_DFL,则会忽略所有线程的信号(或默认值 - kill,core或ignore)。

如果您的进程已将信号设置为特定处理程序例程,则可以通过使用signal(7)操纵特定线程信号掩码来控制哪个线程将接收信号。您可以指定一个线程来管理它们,或者为每个信号创建一个线程, 或者这些选项的任何混合用于特定信号,或者您依赖于Linux内核当前将信号传递到主线程的默认行为。

但是,根据signal(7)手册页,某些信号是特殊的:

可以为整个过程生成(并因此待决)信号   (例如,使用kill(2)发送时)或特定线程(例如,   某些信号,如SIGSEGV和SIGFPE,生成为   执行特定机器语言指令的结果是   线程定向,以及针对特定线程使用的信号  pthread_kill(3))。 可以将过程引导的信号传递给任何信号   其中一个当前没有阻塞信号的线程。   如果多个线程的信号未被阻塞,那么   内核选择一个任意线程来传递信号。

linux下c 多线程如何映射文件夹,c - 在Linux中使用多个线程进行信号处理相关推荐

  1. linux批量更新文件夹里,Linux下使用touch批量修改文件夹和文件的时间

    发布时间:2015-07-26 22:51:41 下面只有两个参数存在差别,......[阅读全文] 阅读(3186) | 评论(0) | 转发(0) 发布时间:2015-06-19 17:25:38 ...

  2. Linux下的zip压缩解压缩文件夹

    实例:压缩服务器上当前目录的内容为xxx.zip文件 zip -r xxx.zip ./* 解压zip文件到当前目录 unzip filename.zip ====================== ...

  3. Linux下穿件带点文件夹和隐藏文件显示隐藏文件命令

    Linux下隐藏文件和文件夹(目录)需要用到 mv 命令.其实超简单的. 例子:将a目录隐藏 命令:mv a .a 新建带点得隐藏文件夹 这是root权限 sudo -i 创建隐藏文件夹 mkdir ...

  4. [231]linux下怎么样上传下载文件夹

    Linux下目录复制:本机->远程服务器 scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2 test1为源目录,test2 ...

  5. linux 下小技巧之-统计文件夹下面子文件夹下面的个数

    170 的服务器上 我把切到的数据放在 vgg_224 文件夹下: 执行:统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 得到10575 ls -lR|gr ...

  6. linux 跳转到文件夹,一步到位,linux下查找并跳转文件夹

    关键:把find的结果(目标文件夹或目录)作为参数交给cd 1 问题和需求: 假设只记得在某个路径里有一个名称中包含了"WPS"3个字母的文件夹,但是具体路径想不起来了.现在需要找 ...

  7. linux挂载u盘在哪个文件夹,如何在Linux挂载U盘

    上午想玩下Linux,想把U盘上的东西拷到虚拟机下的Linux系统中,可是发现U盘插上以后根本就看不到,网上一查,知道要挂载在Linux下才能看到.经过查找资料,实践操作,在这过程中也遇到了这样或者那 ...

  8. linux 桌面壁纸图片在哪个文件夹,如何在 Linux 中为每个屏幕设置不同的壁纸-桌面背景在哪个文件夹...

    编译自: https://itsfoss.com/wallpaper-multi-monitor/ 作者: Abhishek Prakash 译者: geekpi如果你想在 Ubuntu 18.04 ...

  9. linux下删除有锁的文件夹,Linux 文件夹右下角有锁,解锁

    Python 数据类型笔记 Python有以下几种数据类型:1.字符串(str),2.布尔类型(bool),3.数字(int,float),4.列表(list),5.元组(tuple),6.字典(di ...

最新文章

  1. 【SURF+GTM】基于SURF特征提取,GTM去除错误配准点的图像匹配算法的MATLAB仿真
  2. TensorFlow:张量排序,填充和复制
  3. zcmu-1181(大数相加)
  4. 几个so经常使用Function
  5. (027) Linux之shell分支if语句
  6. 手册如何看运放的db_如何处理金属离子与配体之间的配位键?
  7. .net微信公众号开发——基础接口
  8. 走错路也要美美的!富有创意的404页面设计灵感
  9. c语言对分求解方程,用C语言对一元二次方程求解
  10. [POI2000]病毒(补全AC自动机)
  11. Mac用户如何在Deckset中使用Ulysses?
  12. 象棋软件最强手机版_我说它是地表手机最强清理软件,没意见吧
  13. 如何在没有域的环境中搭建AlwaysOn(一)
  14. DELL服务器装机网络问题
  15. 从APP到API:金融科技C端到B端的思考
  16. mysql 基础教程 很全
  17. DB2报错原因汇总(sqlcode sqlstate)
  18. 大量思科设备存在IPv6死亡之Ping漏洞
  19. pytorch安装 镜像网站
  20. android多媒体视频,android多媒体(视频播放器)

热门文章

  1. Java 获取本机IP和Mac以及网卡信息
  2. python m什么意思_Python -m参数原理及使用方法解析
  3. spark将rdd转为string_大数据技术之SparkCore(三)RDD依赖关系
  4. 【MM 模块】 Optimized Purchasing 优化采购 3
  5. SAP中破解系统管理员密码
  6. ABAP基础类型温习
  7. 感恩八年 — 致CSDN (感谢有你)
  8. AM-资产冻结与停用
  9. SAP MM模块调研问卷
  10. 如何控制参照PR作PO时,PO的数量不能超过PR的数量