创建一个msg结构体
创建key值 使用key_t
定义消息队列的id号
获取一个key值,使用ftok函数,路径名加上项目号
创建一个新的消息队列,并且返回给创建的消息队列id号
对其中进行赋值,
使用msgsend进行传递。pid号,msg地址,长度,默认0;
使用msgrcv进行接收。pid号,msg地址,长度,类型,默认0。
可以直接输出结构体的内容了。
使用msgctl删除这条消息队列。
代码:
msg_write.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/types.h>
#include<sys/ipc.h>
#include<sys/msg.h>
typedef struct _msg{
long mtype;
char mtext[50];
}MSG;
int main(){
key_t key;
int msgqid;
MSG msg;
key = ftok(".",2012);
msgqid = msgget(key, IPC_CREAT|0666);
if(msgqid == -1){
perror("msgget");
exit(-1);
}
/* 读取一个消息队列返回到这里 系统会返回一个类型为10 的消息 */
msgrcv(msgqid,&msg,sizeof(msg.mtext),10,0);