首页 > 代码库 > linux 下消息队列发送后没有信息
linux 下消息队列发送后没有信息
在使用消息队列时,调用
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
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()时设置,意思是接收所有消息。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。