#include<stdio.h>
#include<string.h>
#include<myhead.h>
struct msgbuf
{
long kind;
char mtext[1000];
};
#define leng sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{
pid_t pid;
pid =fork();
if(pid>0)
{
key_t key=ftok("./",'A');
if(key==-1)
{
perror("ftok");
return -1;
}
printf("键:%#x\n",key);
int msgID=msgget(key,IPC_CREAT|0664);
if(msgID==-1)
{
perror("msgget");
return -1;
}
printf("msgID=%d\n",msgID);
struct msgbuf send;
while(1)
{
printf("请输入消息的类型:\n");
scanf("%ld",&send.kind);
getchar();
printf("请输入正文的内容:\n");
fgets(send.mtext,sizeof(send.mtext),stdin);
send.mtext[strlen(send.mtext)-1]='\0';
msgsnd(msgID,&send,leng,0);
if(strcmp(send.mtext,"quit")==0)
{
break;
}
//sleep(2);
}
if(msgctl(msgID,IPC_RMID,NULL)==-1)
{
printf("删除失败1\n");
return -1;
}
}
if(pid==0)
{
key_t key=ftok("./",'B');
if(key==-1)
{
perror("ftok");
return -1;
}
printf("键:%#x\n",key);
int msgID=msgget(key,IPC_CREAT|0664);
if(msgID==-1)
{
perror("msgget");
return -1;
}
printf("msgID=%d\n",msgID);
struct msgbuf rcv;
while(1)
{
msgrcv(msgID,&rcv,leng,0,0);
printf("%s\n",rcv.mtext);
if(strcmp(rcv.mtext,"quit")==0)
{
break;
}
}
}
return 0;
}
#include<stdio.h>
#include<string.h>
#include<myhead.h>
struct msgbuf
{
long kind;
char mtext[1000];
};
#define leng sizeof(struct msgbuf)-sizeof(long)
int main(int argc, const char *argv[])
{
pid_t pid;
pid =fork();
if(pid>0)
{
key_t key=ftok("./",'B');
if(key==-1)
{
perror("ftok");
return -1;
}
printf("键:%#x\n",key);
int msgID=msgget(key,IPC_CREAT|0664);
if(msgID==-1)
{
perror("msgget");
return -1;
}
printf("msgID=%d\n",msgID);
struct msgbuf send;
while(1)
{
printf("请输入消息的类型:\n");
scanf("%ld",&send.kind);
getchar();
printf("请输入正文的内容:\n");
//sleep(2);
fgets(send.mtext,sizeof(send.mtext),stdin);
send.mtext[strlen(send.mtext)-1]='\0';
msgsnd(msgID,&send,leng,0);
if(strcmp(send.mtext,"quit")==0)
{
break;
}
}
if(msgctl(msgID,IPC_RMID,NULL)==-1)
{
printf("删除失败1\n");
return -1;
}
}
if(pid==0)
{
key_t key=ftok("./",'A');
if(key==-1)
{
perror("ftok");
return -1;
}
printf("键:%#x\n",key);
int msgID=msgget(key,IPC_CREAT|0664);
if(msgID==-1)
{
perror("msgget");
return -1;
}
printf("msgID=%d\n",msgID);
struct msgbuf rcv;
while(1)
{
msgrcv(msgID,&rcv,leng,0,0);
printf("%s\n",rcv.mtext);
if(strcmp(rcv.mtext,"quit")==0)
{
break;
}
}
}
return 0;
}