0
在linux中,當消息隊列爲空時,消息隊列的輸出應該是什麼?linux中的消息隊列
首先我在一個消息隊列中發送了2條消息,然後我從消息隊列收到了2條消息。現在我再次嘗試從消息隊列接收消息,然後我得到垃圾值。那麼告訴我爲什麼我得到這個垃圾值?
Receive.c
#include <stdio.h>
#include <sys/msg.h>
#include <error.h>
#include <strings.h>
int main()
{
int msqid;
struct message
{
long type;
char text[20];
} msg;
struct msqid_ds buf;
int msgtype = 3;
int num_messages;
int count;
int key = 1234;
msqid = msgget(key,0644);
count = msgctl(msqid,IPC_STAT,&buf);
num_messages = buf.msg_qnum;
printf("Number of messages = %d\n",num_messages);
if (msgrcv(msqid, (void *) &msg, sizeof(msg.text), msgtype, MSG_NOERROR| IPC_NOWAIT)==-1);
{
perror("msgrcv");
}
/* if(num_messages==0)
{
printf("Queue is empty\n");
}
else
{ */
printf("%s \n", msg.text);
// }
return 0;
}
Send.c
#include <string.h>
#include <sys/msg.h>
#include <stdio.h>
int main()
{
struct message
{
long type;
char text[20];
} msg;
int msqid;
int key = 1234;
msqid = msgget(key,IPC_CREAT|0644);
msg.type = 3;
strcpy(msg.text, "This is message 1");
msgsnd(msqid, (void *) &msg, sizeof(msg.text), IPC_NOWAIT);
strcpy(msg.text, "This is message 2");
msgsnd(msqid, (void *) &msg, sizeof(msg.text), IPC_NOWAIT);
printf("2 messages are succesfully send \n");
return 0;
}
我已附上我的輸出圖像 – user3571717
@ user3571717您應該將它附加到您自己的問題,男人。 –
最終我想知道爲什麼這個垃圾數值來自消息隊列中的所有消息後 – user3571717