21
2014/09
在信号的发送与捕捉中,我们对 sleep 函数进行了实现,但是最终,我们的实现仍有问题,那就是在处理我们的 SIGALRM 信号的过程中,如果开始执行其他的信号,之后回到我们的信号处理函数,然后做函数间跳转,进程行为会不可靠
sleep 函数unsigned int sleep(unsigned int seconds); 定义于 unistd.h 中返回未休眠够的秒数 执行 sleep 后进程被挂起,直到满足下列条件之一:已经过了 seconds 的秒数调用进程捕捉到一个信号并从信号处理程序返回 POSIX 的实现static void sig_alrm(int signo)
{ /* do nothing*/ }
unsigned int sleep(unsigned int nsecs)
{
struct sigaction newact, oldact;
sigset_t newmask, oldmask, suspmask;
unsigned int unslept;
newact.sa_handler = sig_alrm;
sigemtyset(&newact.sa_mask);
newact.sa_flags = 0
#读书笔记
#技术帖
#linux
#unix