0
我已经成功地通过使用以下命令创建的消息队列:从消息接收队列
msgIdHareTurtle = msgget(keyHareTurtle, 0644 | IPC_CREAT | O_NONBLOCK);
现在我想队列发送给我用一些其他的方法,
msgsnd(msgIdHareTurtle, (struct msgbuf *)&bufHareTurtle, sizeof(int), IPC_NOWAIT);
和我尝试接受它在不同的过程:
msgrcv(msgIdHareTurtle, (struct msgbuf *)&bufHareTurtle, sizeof(int), 0, IPC_NOWAIT);
我的结构bufHareTurtle是以下类型:
typedef struct smsgbuf{
long mtype;
unsigned int position;
} smsgbuf;
我的问题:发送成功和程序(两个处理)运行过,但每当我送例如2无符号整数,我总是抵达接收到的值(在后来PROCESS)AS 0 EVRYTIME。有人能告诉我这段代码中的错误是什么,或者别的什么可能是错误的。
这2是位置变量的值 – higherDefender 2010-08-09 17:53:49
检查msgrcv和msgsnd的返回值并确保mtype> 0. – 2010-08-09 18:19:25
您正在进行非阻塞读/写操作(IPC_NOWAIT ),你确定你确实收到了一条消息吗? – nos 2010-08-09 18:22:47