Chinaunix

标题: 几个关于信号的问题 [打印本页]

作者: zxw01    时间: 2010-01-17 13:02
标题: 几个关于信号的问题
问几个关于信号的问题:
1)若进程检测到此刻有两个实时信号(自定义的)需要处理,是先来先处理还是按照信号值的大小从大到小来处理?
我觉得应该是后者,因为此时内核没法知道这两个信号谁先来谁后来的,不知道对不对.

2)因为若进程在处理某个信号的时候会将相同的信号暂时屏蔽,所以可以避免相同信号的嵌套处理,但是不同的信号可以嵌套处理吗?

3)看下面的例子:
如果在一个信号(SIGA)的handle里面调用了某个系统调用,这个系统调用有系统空间返回的时候会检查此时有无未处理的信号,如果此时发现有(比如有SIGA,SIB,SIGC),怎么办?是等从这个handle中返回再处理其它的还是直接去处理其它信号的handle?
作者: eexplorer    时间: 2010-01-17 13:02
标题: 回复 #1 zxw01 的帖子
> 问几个关于信号的问题:
> 1)若进程检测到此刻有两个实时信号(自定义的)需要处理,是先来先处理还是按照信号值的大小
> 从大到小来处理?
> 我觉得应该是后者,因为此时内核没法知道这两个信号谁先来谁后来的,不知道对不对.

如果是realtime signal的话,应该是fifo的形式,因为kernel里用一个queue来存放收到的realtime signals. 传统的signal的话,应该是按signal number大小来处理的。

> 2)因为若进程在处理某个信号的时候会将相同的信号暂时屏蔽,所以可以避免相同信号的
> 嵌套处理,但是不同的信号可以嵌套处理吗?

会,你可以在sigaction()的时候,通过sa_mask指定需要block的other signals。

> 3)看下面的例子:
> 如果在一个信号(SIGA)的handle里面调用了某个系统调用,这个系统调用有系统空间返回的
> 时候会检查此时有无未处理的信号,如果此时发现有(比如有SIGA,SIB,SIGC),怎么办?是等从这
> 个handle中返回再处理其它的还是直接去处理其它信号的handle?

应该是会处理SIGB,如果SIGB没有被block的话。
作者: jiufei19    时间: 2010-01-18 13:48
标题: 回复 #2 eexplorer 的帖子
因为以前eexplorer曾经在tcp的有关问题上给过我详细的问题指导,现在想请教下eexplorer能否对我的如下帖子给出指导? 先谢谢啦!

一个TCP的window scale option选项问题
作者: eexplorer    时间: 2010-01-18 13:51
原帖由 jiufei19 于 2010-1-18 13:48 发表
因为以前eexplorer曾经在tcp的有关问题上给过我详细的问题指导,现在想请教下eexplorer能否对我的如下帖子给出指导? 先谢谢啦!

一个TCP的window scale option选项问题


sorry,没注意你的帖子,我先看看。。。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2