2016-04-17 9 views
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); 
     } 
    } 
} 
+3

は 'char mtext [1];' char mtext [160];のタイプミスですか? –

+0

@Bob__私はその変更を行ったが、私はまだ奇妙なエラーを取得しています。 – brostone51

+1

'mtype'は' int'ではなく 'long'でなければなりません。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/msgrcv.htmlとhttp://man7.org/linux/man-pages/man2/msgsnd.2.html –

答えて

0

私はバグがmsgbuf.mtextのサイズではなくmsgbufのサイズを超えていることを発見しました。

関連する問題