发送方:
#include <sys/msg.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
struct msg
{
long msg_types;
char msg_buf[511];
};
int main(void)
{
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);
if ((qid=msgget(IPC_PRIVATE, IPC_CREAT | 0666)) < 0)
{
perror("msgget");
exit(1);
}
if ( (msgsnd(qid, &pmsg, len, 0))<0)
{
perror("msgsnd");
exit(1);
}
printf("successfully send msg: %d\n", qid);
return 0;
}
接收方:
#include <sys/msg.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define BUFSZ 4096
struct msg
{
long msg_types;
char msg_buf[511];
};
int main(int argc, char *argv[])
{
int qid;
int len;
struct msg pmsg;
qid = atoi(argv[1]);
len = msgrcv(qid, &pmsg, BUFSZ, 0, 0);
if (len > 0)
{
pmsg.msg_buf[len] = '\0';
printf("reading queue id : %05d\n", qid);
printf("mesage types %05ld\n", pmsg.msg_types);
printf("message len:%d bytes\n", len);
printf("message text : %s\n", pmsg.msg_buf);
}
else if ( len == 0)
{
printf("no text");
exit(1);
}
else
{
perror("msgrcv error!");
exit(1);
}
system("ipcs -q");
return 0;
return 0;
}