|
发表于 2005-2-26 14:00:20
|
显示全部楼层
找到你的问题了,你的key: 1234生成的msqid是0,用ipcs -q查看, 每次msgrcv后,消息在消息队列里还存在, 用ipcs查看.
输入a之后,
ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
0x000004d2 0 jbug 666 8192 1
运行./rcv之后
ipcs -q
------ Message Queues --------
key msqid owner perms used-bytes messages
0x000004d2 0 jbug 666 8192 1
从上面的结果可以看出, 消息根本就没有被取出来,可能是由于msqid是0的原因,
系统启动以后,如果第一次用IPC_PRIVATE产生的msqid,也会产生msqid=0的消息队列,我就遇到过好几次,
最好是用文件名产生key,再用key产生msqid,在这种情况下,没有msqid为0的情况,Linux有这个性质,同一个key,比如1234, 假如第一次生成msqid为
key msqid
0x000004d2 262144
将它删除后,再产生一次,其msqid的值就变了.
ipcs -q
key msqid
0x000004d2 458752 |
|