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