zoukankan      html  css  js  c++  java
  • 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()时设置,意思是接收所有消息。

  • 相关阅读:
    第七周作业
    第六周作业
    第四周作业
    第三次作业
    第二次作业
    最后一次作业-- 总结报告
    第十四,十五周作业
    第七周作业
    第六周作业
    第四周作业
  • 原文地址:https://www.cnblogs.com/etangyushan/p/3723994.html
Copyright © 2011-2022 走看看