信号产生到信号被处理这段时间间隔,称信号是未决的(pending).
信号阻塞是指阻止信号被处理。
当进程产生了一个阻塞信号,而且对该信号动作是系统默认或捕捉该信号,则该信号保持为未决状态,直到以下两种情况的一种发生:
1)进程对此信号解除了阻塞;2)对此信号的动作改为忽略。
可以通过调用sigpending函数来判定哪些信号是设置为阻塞并处于未决状态的。
如果信号在被解除之前,发送了很多次,系统是如果处理呢?
POSIX.1允许系统递送该信号一次或多次。如果递送该信号多次,则称对这些信号进行了排队。
但大多数UNIX不对信号排队,而是只递送一次这种信号。
每个进程都有一个信号屏蔽字,它规定了当前要阻塞递送到该进程的信号集。
进程可以调用sigprocmask来检测和更改其当前的信号屏蔽字。
int sigprocmask(int how,const sigset_t *new_set, sigset_t *old_set)
阅读(1847) | 评论(0) | 转发(0) |