我正在使用 IPC 进行 2 个程序通信。
我的发件人代码片段:
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);
通信工作正常,但接收方接收到的消息未完全接收。
如果我发送“Hello”它只接收“H”我的缓冲区大小是 200