sigaction -- 2




在信号的发送与捕捉中,我们对 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   

200x200


检测更改信号屏蔽字 -- sigprocmask 函数调用 sigprocmask 函数可以检测或更改进程的信号屏蔽字int sigprocmask(

#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号