#include <myhead.h>
#define leng sizeof(struct msgbuff)-sizeof(long)
struct msgbuff
{
long mtype;
char mtext[100];
};
void parent()
{
key_t key1 = ftok("./",'w');
if(key1==-1)
{
perror("ftok");
exit(1);
}
int msgid;
struct msgbuff send;
// 创建消息队列
msgid = msgget(key1,IPC_CREAT|0664);
if (msgid ==-1)
{
perror("msgget");
exit(1);
}
// 发送消息到队列
while(1)
{
printf("请输入消息的类型:");
scanf("%ld",&send.mtype);
getchar();
printf("请输入消息的内容:");
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;
}
}
}
void child()
{
key_t key2 = ftok("./",'B');
if(key2==-1)
{
perror("ftok");
exit(1);
}
int msgid;
struct msgbuff rev;
// 打开消息队列
msgid = msgget(key2, 0664 | IPC_CREAT);
if (msgid < 0)
{
perror("msgget");
exit(1);
}
// 从队列中读取消息
while(1)
{
msgrcv(msgid, &rev, leng, 0, 0);
printf("子进程1接收消息: %s\n", rev.mtext);
}
}
int main()
{
pid_t pid;
pid = fork();
if (pid < 0)
{
perror("fork");
exit(1);
}
else if (pid == 0)
{
child();
}
else
{
parent();
}
return 0;
}
#include <myhead.h>
#define leng sizeof(struct msgbuff)-sizeof(long)
struct msgbuff
{
long mtype;
char mtext[100];
};
void parent()
{
key_t key2 = ftok("./",'B');
if(key2==-1)
{
perror("ftok");
exit(1);
}
int msgid;
struct msgbuff send;
// 创建消息队列
msgid = msgget(key2,IPC_CREAT|0664);
if (msgid ==-1)
{
perror("msgget");
exit(1);
}
// 发送消息到队列
while(1)
{
printf("请输入消息的类型:");
scanf("%ld",&send.mtype);
getchar();
printf("请输入消息的内容:");
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;
}
}
}
void child()
{
key_t key1= ftok("./",'w');
if(key1==-1)
{
perror("ftok");
exit(1);
}
int msgid;
struct msgbuff rev;
// 打开消息队列
msgid = msgget(key1, 0664 | IPC_CREAT);
if (msgid < 0)
{
perror("msgget");
exit(1);
}
// 从队列中读取消息
while(1)
{
msgrcv(msgid, &rev, leng, 0, 0);
printf("子进程1接收消息: %s\n", rev.mtext);
}
}
int main()
{
pid_t pid;
pid = fork();
if (pid < 0)
{
perror("fork");
exit(1);
}
else if (pid == 0)
{
child();
}
else
{
parent();
}
return 0;
}