免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2684 | 回复: 2
打印 上一主题 下一主题

多进程处理消息队列错误,帮忙看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-09 10:13 |只看该作者 |倒序浏览
我执行多进程处理消息队列的数据出现了这样的错误:

  1. msgrcv: Interrupted system call
复制代码


我程序大概是这样的:

  1.         if ( (msgqid = msgget(0x888, IPC_CREAT|0660)) == -1 )
  2.         {
  3.                 fprintf(stderr, "msgget 888 failed !\n"); exit(-1);
  4.         }
  5.         while(1)
  6.         {
  7.                 memset( &rcvbuf,0x00,sizeof(rcvbuf) );
  8.                 msgp=&rcvbuf;
  9.                 //接收数据
  10.                 rtrn=msgrcv(msgqid, msgp, 10000, 666 ,MSG_NOERROR);
  11.                 if(rtrn==-1)
  12.                 {
  13.                         perror("msgrcv");
  14.                         exit(-1);
  15.                 }
  16.                 fd = fork();
  17.                 if( fd == 0 )
  18.                 {
  19.                                                //数据处理
  20.                         exit(0);
  21.                 }
  22.                 signal( SIGCHLD, sig_child );
  23.         }
复制代码

有空的朋友帮我看下为什么会产生那样的错误信号

[ 本帖最后由 toiby 于 2007-3-9 10:14 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-03-09 11:07 |只看该作者
是否能把源码直接贴出来?

论坛徽章:
0
3 [报告]
发表于 2007-06-11 01:08 |只看该作者

正确答案

我在2000年做前置机时也出现这个问题。你忽略errno==EINTR就可以了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP