综合案例 1) 创建子进程与父进程; 2) 注册SIGINT非实时信号与SIGRTMIN实时信号,并将这两种信号添加到进程屏蔽信号组中; 3) 注册用户自定义信号; 4) 子进程发送5次非实时信号,发5次实时信号; 5) 然后子进程发送SIGUSR1解除进程对SIGINT,SIGTRMIN信号的阻塞 6) 观察实时信号与非实时信号的区别//程序示例
void o...
分类:
系统相关 时间:
2014-11-23 13:13:42
阅读次数:
265
信号在内核中的表示 执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。 注意,阻塞和忽略是不同,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。信号在内核中的表示可以看作是这样的:...
分类:
系统相关 时间:
2014-11-23 11:45:31
阅读次数:
325
SigactionSYNOPSIS
#include
int sigaction(int signum, const struct sigaction *act,
struct sigaction *oldact);功能: sigaction函数用于改变进程接收到特定信号后的行为。参数 第一个参数为信号的值,...
分类:
系统相关 时间:
2014-11-23 11:45:17
阅读次数:
239
信号分类 不可靠信号 VS. 可靠信号 Linux信号机制基本上是从UNIX系统中继承过来的。早期UNIX系统中的信号机制比较简单和原始,后来在实践中暴露出一些问题,它的主要问题是: 1.进程每次处理信号后,就将对信号的响应设置为默认动作。在某些情况下,将导致对信号的错误处理;因此,用户如果不希望这样的操作,那么就要在信号处理函数结尾再一次调用signal(),重新安装该信号。 2....
分类:
系统相关 时间:
2014-11-22 08:11:49
阅读次数:
304
??
1查看信号的方式:man
7 signal,通过这个命令可以查看到所有信息。
2查看信号kill
-l
注意,后面的32个信号表示的实时信号。
会发现一个规律,前32种信号会有各种不同的名称,后32种会以“SIGRTMIN”或者“SIGRTMAX”开头,前者是从unix继承下来的信号,称为不可靠信号(也称为非实时信号),后者为了解决“不可...
分类:
其他好文 时间:
2014-09-21 03:41:10
阅读次数:
353
首先说明:现在大部分Unix系系统如Linux都已经实现可靠信号。
1~31信号与SIGRTMIN-SIGRTMAX之间并不是可靠信号与不可靠信号的区别,在大多数系统下他们都是可靠信号。
只不过:
1~31信号
——不支持排队,为普通信号。
SIGRTMIN-SIGRTMAX信号 ——支持排队,实时信号...
分类:
其他好文 时间:
2014-09-17 16:55:13
阅读次数:
164
signal函数
signal函数是早起Unix系统的信号接口,早期系统中提供不可靠的信号机制。在后来的分支中,部分系统使用原来的不可靠机制定有signal函数,如 Solaris 10 。而更多的系统采用新语义 可靠信号机制,如4.4BSD。
出于signal函数不同系统的不统一性,我们一般使用sigaction函数取代它。关于sigaction函数,我们在本文后面做...
分类:
其他好文 时间:
2014-09-15 15:57:49
阅读次数:
297
【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了...
分类:
系统相关 时间:
2014-07-25 14:10:01
阅读次数:
387
(一)不可靠信号
对前面说的信号,是不可靠的,不可靠指的是信号可能会丢失:一个信号发生了,但进程却可能一直不知道这一点。另外,进程对信号的控制能力有限,只能捕捉信号或忽略它。有时用户希望通知内核阻塞一个信号:不要忽略它,在其发生时记住它,然后在进程做好准备时再通知它。这种阻塞信号的能力并不具备。
之前的版本中村咋一个问题:在进程每次接到信号对其进行处理时,随即将该信号动作复位为默认值。另一个问...
分类:
系统相关 时间:
2014-05-18 06:48:10
阅读次数:
290
前言 在前文中,讲述了一个可靠信号的示例。它分成几个步骤组成( 请参考前文 )。在 Linux
系统编程中,有个方法可以将这些步骤给集成起来,让我们使用起来更加的方便。那就是调用 sigaction 函数。sigaction 函数 原型:int
sigaction (int signo, con.....
分类:
其他好文 时间:
2014-04-28 14:34:18
阅读次数:
567