读书人

Linux编程 讯息队列

发布时间: 2012-11-04 10:42:42 作者: rapoo

Linux编程 消息队列
主要代码如下

程序运行时,手动ipcrm -Q 删掉其对应的消息队列,结果程序返回的errno却是EINVAL,

为什么不是EIDRM呢?这两者有什么区别?请教...

C/C++ code
while( msgsnd(msgId,buf,iLen,0) ){    if( errno == EIDRM )    {        msgId = ReopenMsg(msgKey);    }        if( errno == EINTR )    {        LogPrn(3,1,"msgsnd,   EINTR : Interrupted system call\n sleep 2 seconds...");        sleep(2);    }        if( errno == EINVAL )    {        ....;    }    }


[解决办法]
别在意了, 都是可能返回的, 看实现了.

EIDRM The message queue was removed.

EINVAL Invalid msqid value, or nonpositive mtype value, or invalid msgsz value (less than 0 or greater than the system value MSGMAX).
[解决办法]
探讨
别在意了, 都是可能返回的, 看实现了.

EIDRM The message queue was removed.

EINVAL Invalid msqid value, or nonpositive mtype value, or invalid msgsz value (less than 0 or greater than the system value MSGMAX).

读书人网 >C语言

热点推荐