进程间通信之:信号
if(sigprocmask(SIG_UNBLOCK,set,NULL)0)
{
perror(sigprocmask);
exit(1);
}
else
{
printf(Signalsetisinunblockstaten);
}
while(1);
exit(0);
}
该程序的运行结果如下所示,可以看见,在信号处于阻塞状态时,所发出的信号对进程不起作用,并且该信号进入待处理状态。读者输入任意键,并且信号脱离了阻塞状态之后,用户发出的信号才能正常运行。这里SIGINT已按照用户自定义的函数运行,请读者注意阻塞状态下SIGINT的处理和非阻塞状态下SIGINT的处理有何不同。
$./sigset
Signalsetwasblocked,Pressanykey!/*此时按任何键可以解除阻塞屏蔽字*/
Ifyouwanttoquit,pleasetrySIGQUIT/*阻塞状态下SIGINT的处理*/
Signalsetisinunblockstate/*从信号屏蔽字中删除set中的信号*/
Ifyouwanttoquit,pleasetrySIGQUIT/*非阻塞状态下SIGINT的处理*/
Ifyouwanttoquit,pleasetrySIGQUIT
Quit/*非阻塞状态下SIGQUIT处理*/
linux操作系统文章专题:linux操作系统详解(linux不再难懂)模拟信号相关文章:什么是模拟信号
linux相关文章:linux教程
数字通信相关文章:数字通信原理
通信相关文章:通信原理
评论