|
if(-1 == (msgid = msgget(MSG_KEY_CONFS, IPC_CREAT | IPC_EXCL | 0666)))
{
if(-1 == (msgid = msgget(MSG_KEY_CONFS, 0666)))
{
DBG("msgget err");
goto err;
}
}
创建消息队列,这里是没有问题的。
下面是消息接收部分
while(msgsize = msgrcv(msgid, &msg, sizeof(msg_conf_t), 0, 0))
{
if(-1 == msgsize)
{
DBG("msgrcv Warning: %s", strerror(errno));
//goto err;
continue;
}
……………………
正常情况下是没有问题的,但是只要把进程用CTRL+Z和bg命令后,这里msgrcv就返回-1, 并且DBG出来的错误信息是Interrupted system call,
系统不是用信号吗?怎么有消息呢?
请教高手这是为什么???? |
|