0
メッセージキューのハングアップを取得しようとしています。何らかの理由で、コンソールに入力したメッセージを表示するときに、文字列が切り捨てられたり変更されたりすることがあります。なぜこれが起こっているのか誰にも分かりますか?メッセージキューから出力が変更/切り捨てされる
void *readFromQueue() {
int ret;
mbr = malloc(sizeof(struct msgbuf)); // Allocate space to mbr.
while (TRUE) { // Forever...
ret = (int) msgrcv(msgId, mbr, sizeof(struct msgbuf), myId, MSG_NOERROR | IPC_NOWAIT); // Receive a message
if (ret == -1) { // Check for error.
//perror("Failed to receive message.");
} else {
printf("\t%160s", mbr->mtext);
}
}
}
は 'char mtext [1];' char mtext [160];のタイプミスですか? –
@Bob__私はその変更を行ったが、私はまだ奇妙なエラーを取得しています。 – brostone51
'mtype'は' int'ではなく 'long'でなければなりません。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/msgrcv.htmlとhttp://man7.org/linux/man-pages/man2/msgsnd.2.html –