3.由软件条件产生信号
alarm函数可以设定一个闹钟,也就是告诉内核在seconds秒之后给当前进程发送SIGALARM信号,该信号的默认处理动作是终止当前进程。返回值是0或者上次设定的闹钟余下的秒数,当seconds为0时表示取消该闹钟。
4.阻塞信号
信号递达:实际执行信号的处理动作成为信号递达。
信号未决:信号从产生到递达之间的状态称为信号未决。
被阻塞的信号产生时将保持在未决状态,当接触阻塞时它将会被递达。
信号集操作函数如下:
sigemptyset表示初始化信号集,使对应的bit清零;
sigfillset表示所有bit置位;
sigaddset表示在信号集中添加某个信号;
sigselset表示在信号集中删除某个信号;以上四个函数成功返回0,不成功返回-1.
sigismember是一个布尔函数,用于判断一个信号集是否包含某种信号,包含返回1,不包含返回-1.
调用sigprocmask可以读取或者更改进程的信号屏蔽字。成功返回0失败返回-1.
how参数可选值为:
SIG_BLOCK阻塞某个信号,SET_UNBLOCK解除阻塞某个信号,SIG_SETMASK设置当前信号屏蔽字。第二个参数表示当前信号屏蔽字,第三个参数表示旧的信号屏蔽字。
sigpending读取当前进程的未决信号集。
以下程序是由起初的31个0变成,当接收到2号信号时对应的第二个比特位给它置位的操作。