当前位置:  技术问答>linux和unix

一个消息队列例子,第一次运行正确,第二次运行就提示消息发送失败了

    来源: 互联网  发布时间:2017-01-21

    本文导语:  第一次运行还能正确发送消息,第二次运行就无法发出消息,请大家指点下,谢谢。 #include  #include  #include  #include  #include  #include  int main(void) { key_t unique_key; int msgid; int status; char str1[] = {"test message:hello!"...

第一次运行还能正确发送消息,第二次运行就无法发出消息,请大家指点下,谢谢。

#include 
#include 
#include 
#include 
#include 
#include 
int main(void)
{
key_t unique_key;
int msgid;
int status;
char str1[] = {"test message:hello!"};
char str2[] = {"test message:goodbye!"};
struct msgbuf
{
long msgtype;
char msgtext[1024];
}sndmsg,rcvmsg;

if(msgid = msgget(IPC_PRIVATE, 0666) == -1)
{
printf("msgget error!n");
exit(254);
}

sndmsg.msgtype = 111;
sprintf(sndmsg.msgtext, "%s", str1);

if(msgsnd(msgid, (struct msgbuf *)&sndmsg, sizeof(str1)+1, 0) == -1)
{
printf("msgtype 111 send error!n");
exit(254);
}

if(status = msgrcv(msgid, (struct msgbuf *)&rcvmsg,80,111,IPC_NOWAIT) == -1)
{
printf("msgrcv error!n");
exit(254);
}

printf("The received message:%sn",rcvmsg.msgtext);
msgctl(msgid, IPC_RMID, 0);

exit(0);
}

|
改成if( ( msgid=(msgget(IPC_PRIVATE, 0660))) == -1)

ipcs -qa 就发现异常了,一下子多了那么多队列

|
嗯,典型的C语法错误
if((msgid = msgget(IPC_PRIVATE, 0666)) == -1)

|
 sizeof(str1)+1 这不对哦,不需要+1,不过你这里是先拷贝过去的,多发也不是越界而已。

|
if(msgid = msgget(IPC_PRIVATE, 0666) == -1)
少加了括号,应该是if((msgid = msgget(IPC_PRIVATE, 0666)) == -1)

    
 
 

您可能感兴趣的文章:

  • 提交后台运行、消息队列
  • 怎样得到一个X Windows下程序运行的消息!
  • 创建消息队列,接受消息失败,接受程序再发送错误消息给发送程序//程序能运行,不出结果
  • 进来看看,怎样监控一个程序开始运行的消息?
  • HP-UX 下消息队列能否保证消息包的先进先出?
  • 各位专家,如何知道消息队列中消息是否已经超时了?
  • unix下一个关于消息队列的问题
  • 消息队列中消息大小
  • linux 消息队列长度的问题
  • liunx 消息队列的问题
  • 关于消息队列的问题
  • sco unix中消息队列中的一次可发送的最长消息的字节长度是多少?
  • 消息队列消息总大小的问题
  • 请教:写入队列消息的长度问题
  • 关于消息队列
  • 消息队列的清理问题
  • 消息队列问题
  • 各位专家,如何知道消息队列中消息是否已经超时了? iis7站长之家
  • unix关于消息队列和函数msgctl的问题。。急啊!!!
  • Linux下使用C++互斥访问文件+消息队列
  • LINUX如何调整POSIX消息队列大小
  • linux下消息队列不阻塞
  • 单个消息队列能实现进程间聊天功能吗?
  • 请教消息队列相关问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JavaScript中的消息框(警告框,确认框,提示框)语法
  • 用java,怎样实现从一个类的发一个消息(消息本身也是一个类)到另一个类?
  • **********写了一个简单的UDP程序,接受英文的消息正常,接受中文的消息显示不完整,请问是什么原因
  • 重分求解,UNIX下的消息队列非常失败,经常发生堵塞现象,现改用FIFO,但FIFO又得自己设计消息,请高手指点
  • 消息队列收不到消息
  • 怎样在程序中修改一个系统V消息队列中消息的个数::
  • MQTT 消息代理 Mosquitto
  • 怎么查询消息队列中每条消息的状态
  • 怎样获取终端的所有打印消息
  • *** 高分请问关于触发消息事件的问题? ***
  • 消息隊列與select的問題
  • 消息服务器 Json Messaging
  • 请教一个关于linux下的消息机制的问题
  • 分布式分组消息系统 Spread
  • 消息中间件的功能?各位铜人帮忙!
  • 页面消息提醒插件 Sticky
  • 消息通知提醒插件 jQuery Notify
  • 求linux下监视消息的工具
  • 关于多进程同时从消息队列取消息的问题
  • 程序在普通用户下执行,无法发送消息
  • Java消息系统 BBMS


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3