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是生者吧。