29 }
注意,此函数没有成功返回值,如果它返回到调用者,则总是返回-1 ,
这个程序这行结果
这个结果可分析:
在程序调用sigprocmask期间,这个函数阻塞啦信号SIGINT,SLEEP(4)
在这4秒人内,SIGINT 信号是阻塞的茫然后过4秒
运行的是SIGSUSPEND这个函数解除啦对SIGINT 函数的阻塞,然后立即进入挂起状态,等待信号发生后从信号处理函数返回,
这样就体现出调用SIGSUSPENG函数的作用啦:这个函数是一个原子操作:
这样会避免在解除对SIGINT的阻塞和PAUSE之间发生的SIGINT信号被丢失的问题
//
sigsuspend的另一种应用是等待一个信号处理程序设置一个全局变量,下一个程序用于捕捉中断信号和退出信号 ,但是希望只有在捕捉到退出信号时再继续执行MAIN程序
这个程序比较关键的就是WHILE循环的设置:。
这里32 /* quitflag = 0; */这一行没明白是什么作用,求高手指点
因为把它注释掉对程序没有影响。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/230427.html原文链接:https://javaforall.net
