首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

linux 消息列队,该怎么处理

2012-05-11 
linux 消息列队我有写了两个程序a.c#includestdio.h#includestdlib.h#includestring.h#includesign

linux 消息列队
我有写了两个程序
a.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<signal.h>
#include<sys/msg.h>
#include<sys/ipc.h>
 struct message
{
int chadu;
char date[256];

};

main()
{
struct message mydate;
/*连接消息列队*/
int msqid;
if((msqid=msgget(999,0666))==-1)
 {msgctl(msqid,IPC_RMID,NULL);}
if((msqid=msgget(999,IPC_CREAT|0666))==-1)
{printf("error1\n");}


//发送消息
  printf("input \n");
  scanf("%s",mydate.date);
  if(msgsnd(msqid,&mydate,256,0)==-1)//运行时这边返回-1  
  {printf("error2\n");}
  else
  {printf("ok");}

}


b.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<signal.h>
#include<sys/msg.h>
#include<sys/ipc.h>
 struct message
{
int chadu;
char date[256];

};

main()
{


struct message mydate;
/*连接消息列队*/
int msqid;
if((msqid=msgget(999,0666))==-1)
 {msgctl(msqid,IPC_RMID,NULL);}
if((msqid=msgget(999,IPC_CREAT|0666))==-1)
{printf("error1\n");}
//接受消息
if(msgrcv(msqid,&mydate,256,1L,0)==-1)
{printf("error3\n");}
else
{printf("%s\n",mydate.date);}


}
我先运行B.C然后运行A.C 结果是 A中输入字符后 返回 输出error2 B.C没反应求指点时哪里出到问题?

[解决办法]
為什麼不是先運行A.c再運行B.c哩,A.c應該是生產者吧。

热点排行