msgsnd && msgrcv被信号中断
时间:2010-11-20 来源:luvi88
linux系统消息队列使用时,会与信号冲突。msgsnd/msgrcv以block方式发送/接收消息时,会因为进程收到了信号而中断。此时msgsnd/msgrcv将返回-1,errno被设置为EINTR(-4)。且即使在插入信号时设置了SA_RESTART,也无效。
此时我们只好用如下方式来重启消息队列:
while(TRUE) |
附:插入信号时,设置SA_RESTART方式:
void handler(int signo) |