代码
//写进程
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#include<unistd.h>
#include<string.h>
struct msg
{
long msg_types;
char msg_buf[512];
};
int main()
{
int qid;
int pid;
int len;
struct msg pmsg;
pmsg.msg_types = getpid();
sprintf(pmsg.msg_buf,"hello! this is %d\n",getpid());
len = strlen(pmsg.msg_buf);
qid = msgget(IPC_PRIVATE,IPC_CREAT|0666);
msgsnd(qid,&pmsg,len,0);
printf("successfully send a massage to queue:%d\n",qid);
return 0;
}
//读进程
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
#define BUFSZ 4096
struct msg
{
long msg_types;
char msg_buf[512];
};
int main(int argc,char ** argv)
{
int qid;
int len;
struct msg pmsg;
if(argc != 2)
{
perror("argc");
}
qid = atoi(argv[1]);
len = msgrcv(qid,&pmsg,BUFSZ,0,0);
if(len > 0)
{
pmsg.msg_buf[len] = '\0';
printf("qid %d\n",qid);
printf("msg type %ld\n",pmsg.msg_types);
printf("msg text %s\n",pmsg.msg_buf);
}
else if(len == 0)
{
printf("no massage!\n");
}
else
{
perror("msgrcv error