日期:2014-05-16  浏览次数:20719 次

当信号量(灯)遇上信号,help!
问题是这样的:
程序开了几个写进程,一个读进程,使用共享内存传递数据,使用信号量(灯)锁定来同步,现在的问题是,如果程序在前台运行时,当几个写进程在信号量上等待时,使用ctrl+z(SIGSTOP)后,在此信号量上等待的进程信号量操作都会出错。因为SIGSTOP不能ignore且不能捕获,这个问题很让我头大



------解决方案--------------------
放到后台去?
------解决方案--------------------
鄙视楼主...

信号会打断所有阻塞操作,所以你能做的就是
while ( 1 )
{
if ( do() == -1 && errno == EINTR )
continue;
}