int pause(void);
功能:使调的进程进入休眠状态,直到遇到信号且信号处理函数结束后才返回。
返回值:要么永远不返回,要么被信号中断返回-1。
unsigned int sleep(unsigned int seconds);
功能:使调用的进程休眠seconds秒,当信号发生时会提前结束。
返回值:0(睡够了)或剩余的秒数。
闹钟信号
unsigned int alarm(unsigned int seconds);
功能:在seconds秒后向调用的进程发送闹钟信号,该信号的默认处理方式是终止进程。
seconds:如果为0,则相当于取消闹钟信号。
返回值:上次设置的闹钟信号,还有多少秒产生。
信号集与信号屏蔽
1、信号集:多个信号的集合,类型sigset_t 128位二进制,每一位代表一个信号。
int sigemptyset(sigset_t *set);
功能:设置信号集中所有二进制位为0
int sigfillset(sigset_t *set);
功能:设置信号集中所有二进制位为1
int sigaddset(sigset_t *set, int signum);
功能:向信号集中添加信号
int sigdelset(sigset_t *set, int signum);
功能:从信号集中删除信号
int sigismember(const sigset_t *set, int signum);
功能:判断信号集中是否有某个信号
2、信号屏蔽
信号屏蔽掩码(信号集):里面记录着当前进程不想收到的信号
int sigprocmask(int how, const sigset_t *set,sigset_t *oldset);
功能:设置当前进程的信号屏蔽掩码
how:修改信号掩码的方式
SIG_BLOCK 把参数set中的信号添加到信号屏蔽码中
SIG_UNBLOCK 把参数set中与信号屏蔽码中交集的信号删除
SIG_SETMASK 把参数set中信号拷贝到信号屏蔽码中
set:NULL则忽略,表示只想获取当前进程的信号屏蔽码
oldset:存储当前进程的信号屏蔽码
注意:当信号屏幕码还原时,未决状态的信号会再次发生,继续递送,不可靠信号只递送一次,而可靠信号排队递送。
int sigpending(sigset_t *set);
功能:获取当前进程未决状态的信号。