Linux编程 讯息队列
Linux编程 消息队列主要代码如下程序运行时,手动ipcrm -Q 删掉其对应的消息队列,结果程序返回的errno却是E
Linux编程 消息队列
主要代码如下
程序运行时,手动ipcrm -Q 删掉其对应的消息队列,结果程序返回的errno却是EINVAL,
为什么不是EIDRM呢?这两者有什么区别?请教...
C/C++ codewhile( 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).
[解决办法]