消息队列Linux发送信息出错,linux 下消息队列发送后没有信息

在使用消息队列时,调用

#include

#include

#include

#include

#include

#include

struct mymsg

{

long mytype;

char even[32];

};

#define VALUE (key_t)0x1fff

int main()

{

struct mymsg msg;

int msgid,res;

msgid = msgget (VALUE, 0666 | IPC_CREAT);

res =msgsnd(msgid, &msg, sizeof(msg), 0);

}

执行上面的程序后,没有报错。

使用ipcs -q查看消息队列,里面的message是0。

找了半天,原来是自己在使用msgsnd()函数的时候,结构体中的mytype没有赋值。导致了进入不了消息队列。

在msgget()函数上面加上这句:

msg.mytype = 1;

编译运行可以看到消息队列中有消息了。

还有一个使用msgsnd()函数需要注意的问题,就是如果你 memset (&msg, 0,

sizeof(msg));后,mytype=0

这个是不对的,mytype=0的情况只能是msgrcv()时设置,意思是接收所有消息。

原文:http://www.cnblogs.com/etangyushan/p/3723994.html

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值