重读APUE(13)-可靠信号

在信号产生和传递之间有一段时间间隔,称为信号是未决的;

进程可以设置阻塞信号传递;如果进程产生了一个阻塞的信号,并且对该信号的动作是系统默认或者捕捉该信号,则该进程保持此信号为未决状态,直到该进程对此信号接触阻塞,或者将对该信号的动作改为忽略;内核在传递一个原来被阻塞的信号给进程时(而不是产生该信号时),才决定对它的处理方式;这样就意味着进程在信号传递给它之前仍然可以改变对该信号的动作;进程调用sigpending函数来判断哪些信号是设置为阻塞并处于未决状态的;

如果进程在解除对某个信号的阻塞之前,信号发生了多次,大多数unix并不对这些信号排队,而只是传递这种信号一次;

如果多个信号要传递给一个进程,posix建议,在其他信号之前传递与进程当前状态有关的信号,如SIGSEGV;

每个进程有一个信号屏蔽字,它规定了当前要阻塞传送到该进程的信号集;每种可能的信号,该屏蔽字都有一位与之对应;对于某种信号,如果对应位被设置,则当前信号是被阻塞的;

 

posted @ 2019-10-30 14:51  AlexAlex  阅读(184)  评论(0编辑  收藏  举报