当前位置: 技术问答>linux和unix
当信号量(灯)遇上信号,help!
来源: 互联网 发布时间:2016-01-10
本文导语: 问题是这样的: 程序开了几个写进程,一个读进程,使用共享内存传递数据,使用信号量(灯)锁定来同步,现在的问题是,如果程序在前台运行时,当几个写进程在信号量上等待时,使用ctrl+z(SIGSTOP)后,在此信号...
问题是这样的:
程序开了几个写进程,一个读进程,使用共享内存传递数据,使用信号量(灯)锁定来同步,现在的问题是,如果程序在前台运行时,当几个写进程在信号量上等待时,使用ctrl+z(SIGSTOP)后,在此信号量上等待的进程信号量操作都会出错。因为SIGSTOP不能ignore且不能捕获,这个问题很让我头大
程序开了几个写进程,一个读进程,使用共享内存传递数据,使用信号量(灯)锁定来同步,现在的问题是,如果程序在前台运行时,当几个写进程在信号量上等待时,使用ctrl+z(SIGSTOP)后,在此信号量上等待的进程信号量操作都会出错。因为SIGSTOP不能ignore且不能捕获,这个问题很让我头大
|
鄙视楼主...
信号会打断所有阻塞操作,所以你能做的就是
while ( 1 )
{
if ( do() == -1 && errno == EINTR )
continue;
}
信号会打断所有阻塞操作,所以你能做的就是
while ( 1 )
{
if ( do() == -1 && errno == EINTR )
continue;
}
|
放到后台去?