linux中消息队列,linux中的消息队列

在linux中,当消息队列为空时,消息队列的输出应该是什么?linux中的消息队列

首先我在一个消息队列中发送了2条消息,然后我从消息队列收到了2条消息。现在我再次尝试从消息队列接收消息,然后我得到垃圾值。那么告诉我为什么我得到这个垃圾值?

Receive.c

#include

#include

#include

#include

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

#include

#include

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;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值