1.进程A向消息队列发送消息“hello,world”
2.进程B从消息队列读取消息,并打印。
源代码:
write.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
struct msg
{
long msg_types;
char msg_buf[512];
};
int main()
{
int newsid,pid,len;
{
long msg_types;
char msg_buf[512];
};
int main()
{
int newsid,pid,len;
char a;
printf("请输入消息\n");
scanf("%s",&a);
struct msg pmsg;
pmsg.msg_types=getpid();
strcpy(pmsg.msg_buf,a);
printf("请输入消息\n");
scanf("%s",&a);
struct msg pmsg;
pmsg.msg_types=getpid();
strcpy(pmsg.msg_buf,a);
len = strlen(pmsg.msg_buf);
if((newsid=msgget(1234,IPC_CREAT|0666))<0)
{
printf("msgget error\n");
exit(1);
}
if((msgsnd(newsid,&pmsg,len,0))<0)
{
printf("msgsnd error\n");
exit(1);
}
return 0;
}
if((newsid=msgget(1234,IPC_CREAT|0666))<0)
{
printf("msgget error\n");
exit(1);
}
if((msgsnd(newsid,&pmsg,len,0))<0)
{
printf("msgsnd error\n");
exit(1);
}
return 0;
}
read.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <string.h>
struct msg
{
long msg_types;
char msg_buf[512];
};
{
long msg_types;
char msg_buf[512];
};
int main()
{
int newsid,len;
struct msg pmsg;
newsid = msgget(1234,IPC_CREAT|0666);
len=msgrcv(newsid,&pmsg,4096,0,0);
if(len>0)
{
pmsg.msg_buf[len]='\0';
printf("%s\n",pmsg.msg_buf);
}
else if(len==0)
{
printf("no message\n");
}
else
{
printf("error\n");
exit(0);
}
return 0;
}
{
int newsid,len;
struct msg pmsg;
newsid = msgget(1234,IPC_CREAT|0666);
len=msgrcv(newsid,&pmsg,4096,0,0);
if(len>0)
{
pmsg.msg_buf[len]='\0';
printf("%s\n",pmsg.msg_buf);
}
else if(len==0)
{
printf("no message\n");
}
else
{
printf("error\n");
exit(0);
}
return 0;
}