#include
typedef struct msgbuf
{
long mtype;
char mtetx[100];
}buf;
#define zwlen sizeof(buf)-sizeof(long)
int main(int argc, const char *argv[])
{
key_t key = ftok("./",'w');//获取密钥
if(key == -1)
{
perror("ftok");
return -1;
}
int msqid = msgget(key,IPC_CREAT|0664);//获取消息队列
if(msqid==-1)
{
perror("msgget");
return -1;
}
buf msginfo;
while(1)
{
printf("输入类型\n");
scanf("%ld",&msginfo.mtype);
getchar();//吸收enter
printf("输入正文\n");
fgets(msginfo.mtetx,sizeof(msginfo.mtetx),stdin);
msginfo.mtetx[strlen(msginfo.mtetx)-1]='\0';
msgsnd(msqid,&msginfo,zwlen,0);
if(strcmp(msginfo.mtetx,"quit")==0)
{
break;
}
}
if(msgctl(msqid,IPC_RMID,NULL)==-1)
{
perror("msgctl");
return -1;
}
return 0;
}
#include
typedef struct msgbuf
{
long mtype;
char mtetx[100];
}buf;
#define zwlen sizeof(buf)-sizeof(long)
int main(int argc, const char *argv[])
{
key_t key = ftok("./",'w');//获取密钥
if(key == -1)
{
perror("ftok");
return -1;
}
int msqid = msgget(key,IPC_CREAT|0664);//获取消息队列
if(msqid==-1)
{
perror("msgget");
return -1;
}
buf msginfo;
while(1)
{
msgrcv(msqid,&msginfo,zwlen,0,0);
printf("%s\n",msginfo.mtetx);
if(strcmp(msginfo.mtetx,"quit")==0)
{
break;
}
}
if(msgctl(msqid,IPC_RMID,NULL)==-1)
{
perror("msgctl");
return -1;
}
return 0;
}