#include
#include
#include
struct msg_buf
{
int mtype;
char data[255];
};
int main()
{
key_t key;
int msgid;
int ret;
struct msg_buf msgbuf;
key=ftok("/tmp/3",'a');//首先尝试去获得key,如果文件不存在,也会返回键值(无效的)
printf("key = [%x]
",key);
msgid=msgget(key,IPC_CREAT|0666); /*通过文件对应*///如果文件不存在,则会创建文件,同时返回msgid
printf("msgid = [%d]
",msgid);
if(msgid==-1)
{
printf("create error
");
return -1;
}
msgbuf.mtype = getpid();
strcpy(msgbuf.data,"test haha");
ret=msgsnd(msgid,&msgbuf,sizeof(msgbuf.data),IPC_NOWAIT);//长度是数据部分的长度
if(ret==-1)
{
printf("send message err
");
return -1;
}
memset(&msgbuf,0,sizeof(msgbuf));//清空msgbuf的内容
ret=msgrcv(msgid,&msgbuf,sizeof(msgbuf.data),getpid(),IPC_NOWAIT);
if(ret==-1)
{
printf("recv message err
");
return -1;
}
printf("recv msg =[%s]
",msgbuf.data);
}