我正在使用IPC進行2程序通信。C程序IPC消息
片段我的代碼發送者:
int msgflg = IPC_CREAT | 0666;
key_t key_id;
struct msgbuf sbuf;
size_t buflen;
key_id = 1235;
sbuf.mtype = 1;
if (msgsnd(msqid, &sbuf, buflen, IPC_NOWAIT) < 0)
{ die("msgsnd");
}
else {
mvprintw(8, 0, "%s", " ");
mvprintw(8, 0, "%s", sbuf.mtext);
}
接收端:
if ((msqid = msgget(key_id, 0666)) < 0)
die("msgget()"); //break;
//Receive an answer of message type 1.
if (msgrcv(msqid, &rcvbuffer, MAXSIZE, 1, 0) < 0)
die("msgrcv");
mvprintw(curr_row + 1, 0, "Cleaning process monitor: %s", rcvbuffer.mtext);
通信工作完美,但在接收器的端接收到的消息沒有完全接收。
如果我發送「你好」,它僅接受「H」 我的緩衝區大小爲200
'rcvbuffer'是什麼樣的? – user7116
操作系統? – 2012-06-05 12:10:40
你設置了buflen嗎? – waitingkuo