ONE.C
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
struct send1
{
int num;
char content[1024];
};
#define len sizeof(struct send1) - sizeof(int)
int main(int argc, const char *argv[])
{
pid_t tid = fork();
if(tid > 0)
{
key_t key = ftok("1.txt",'A');
int ID = msgget(key,IPC_CREAT|0664);
struct send1 data1;
while(1)
{
printf("请输入数据类型");
scanf("%d",&data1.num);
printf("请输入数据");
fgets(data1.content,sizeof(data1.content),stdin);
data1.content[sizeof(data1.content) -1] = '\0';
msgsnd(ID,&data1,len,0);
if(strcmp(data1.content,"quit\n")==0)
break;
}
if(msgctl(ID,IPC_RMID,NULL) == -1)
{
printf("错误\n");
return -1;
}
}
else if(tid == 0)
{
key_t key = ftok("2.txt",'A');
int ID = msgget(key,IPC_CREAT|0664);
struct send1 data2;
while(1)
{
msgrcv(ID,&data2,len,0,0);
if(strcmp(data2.content,"quit")==0)
break;
printf("数据:%s",data2.content);
}
}
return 0;
}
TWO.C
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
struct send1
{
int num;
char content[1024];
};
#define len sizeof(struct send1) - sizeof(int)
int main(int argc, const char *argv[])
{
pid_t tid = fork();
if(tid > 0)
{
key_t key = ftok("1.txt",'A');
int ID = msgget(key,IPC_CREAT|0664);
struct send1 data1;
while(1)
{
printf("请输入数据类型");
scanf("%d",&data1.num);
printf("请输入数据");
fgets(data1.content,sizeof(data1.content),stdin);
data1.content[sizeof(data1.content) -1] = '\0';
msgsnd(ID,&data1,len,0);
if(strcmp(data1.content,"quit\n")==0)
break;
}
if(msgctl(ID,IPC_RMID,NULL) == -1)
{
printf("错误\n");
return -1;
}
}
else if(tid == 0)
{
key_t key = ftok("2.txt",'A');
int ID = msgget(key,IPC_CREAT|0664);
struct send1 data2;
while(1)
{
msgrcv(ID,&data2,len,0,0);
if(strcmp(data2.content,"quit")==0)
break;
printf("数据:%s",data2.content);
}
}
return 0;
}