//ubuntu@ubuntu:zy$ cat send.c
#include <myhead.h>
struct msgbuf
{
long mtype;
char mtext[1024];
};
#define SIZE (sizeof(struct msgbuf)-sizeof(long))
int main(int argc, const char *argv[])
{
key_t key=0;
if((key=ftok("/",'a'))==-1)
{
perror("ftok error");
return -1;
}
printf("key=%#x\n",key);
int msqid=0;
if((msqid=msgget(key,IPC_CREAT|0664))==-1)
{
perror("msgget error");
return -1;
}
printf("msqid=%d\n",msqid);
struct msgbuf buf={.mtype=100};
while(1)
{
printf("请输入要存放的数据:");
scanf("%s",buf.mtext);
getchar();
msgsnd(msqid,&buf,SIZE,0);
printf("发送成功\n");
if(strcmp(buf.mtext,"quit")==0)
{
break;
}
}
return 0;
}
//ubuntu@ubuntu:zy$ cat rec.c
#include <myhead.h>
struct msgbuf
{
long mtype;
char mtext[1024];
};
#define SIZE (sizeof(struct msgbuf)-sizeof(long))
int main(int argc, const char *argv[])
{
key_t key=0;
if((key=ftok("/",'a'))==-1)
{
perror("ftok error");
return -1;
}
printf("key=%#x\n",key);
int msqid=0;
if((msqid=msgget(key,IPC_CREAT|0664))==-1)
{
perror("msgget error");
return -1;
}
printf("msqid=%d\n",msqid);
struct msgbuf buf;
while(1)
{
msgrcv(msqid,&buf,SIZE,0,0);
printf("收到消息为:%s\n",buf.mtext);
if(strcmp(buf.mtext,"quit")==0)
{
break;
}
}
if(msgctl(msqid,IPC_RMID,NULL)==-1)
{
perror("msgctl error");
return -1;
}
return 0;
}