怎样做 云知梦 网站 付费网站,个人社保缴费证明在哪里下载,博客网站开发环境,阿里巴巴运营技巧先进先出#xff0c;保证信息的有序性。
函数#xff1a;msgget(搭配ftok)、msgsnd、msgrcv、msgctl
实现流程#xff1a;
1、创建消息队列IPC对象 msgget
2、通信(内置函数#xff1a;msgsnd、msgrcv)
3、删除消息队列IPC对象 msgctl
write.c
/*
* 文件名称…先进先出保证信息的有序性。
函数msgget(搭配ftok)、msgsnd、msgrcv、msgctl
实现流程
1、创建消息队列IPC对象 msgget
2、通信(内置函数msgsnd、msgrcv)
3、删除消息队列IPC对象 msgctl
write.c
/*
* 文件名称write.c
* 创 建 者cxy
* 创建日期2024年02月07日
* 描 述
*/
#include stdio.h
#include sys/ipc.h
#include sys/types.h
#include sys/msg.htypedef struct msgbuf{ long type; //区分通信的队列char data[100]; //通信内容
}MSG;int main(int argc, char *argv[])
{//1、创建消息队列IPC对象msgget//1.1 获取key值key_t key ftok(/home,5);//1.2 创建消息队列IPC对象//获取消息队列ID号int msgid msgget(key,IPC_CREAT|0664);//2、通信msgsndMSG msg_1 {1,hahaha}; //队列1MSG msg_2 {2,heiheihei}; //队列2MSG msg_3 {3,xixixi}; //队列3MSG msg_4 {1,----hahaha----}; //队列1msgsnd(msgid,msg_1,sizeof(msg_1)-sizeof(long),0); //通信内容大小、权限可读可写msgsnd(msgid,msg_2,sizeof(msg_2)-sizeof(long),0);msgsnd(msgid,msg_3,sizeof(msg_3)-sizeof(long),0);msgsnd(msgid,msg_4,sizeof(msg_4)-sizeof(long),0);//3、删除消息队列IPC对象msgctlmsgctl(msgid,IPC_RMID,NULL);return 0;
}
read.c
/*
* 文件名称read.c
* 创 建 者cxy
* 创建日期2024年02月07日
* 描 述
*/
#include stdio.h
#include sys/ipc.h
#include sys/types.h
#include sys/msg.htypedef struct msgbuf{ long type; //区分通信的队列char data[100]; //通信内容
}MSG;int main(int argc, char *argv[])
{//1、创建消息队列IPC对象msgget//1.1 获取key值key_t key ftok(/home,5);//1.2 创建消息队列IPC对象//获取消息队列ID号int msgid msgget(key,IPC_CREAT|0664);//2、通信msgrcvMSG mymsg_1;MSG mymsg_2;MSG mymsg_3;MSG mymsg_4;msgrcv(msgid,mymsg_1,sizeof(MSG)-sizeof(long),3,0); //mymsg_1存储队列3信息msgrcv(msgid,mymsg_2,sizeof(MSG)-sizeof(long),2,0); //mymsg_2存储队列2信息msgrcv(msgid,mymsg_3,sizeof(MSG)-sizeof(long),1,0); //mymsg_3存储队列1信息msgrcv(msgid,mymsg_4,sizeof(MSG)-sizeof(long),1,0); //mymsg_4存储队列1信息printf(%s\n,mymsg_1.data);printf(%s\n,mymsg_2.data);//按照发送顺序打印队列1中信息printf(%s\n,mymsg_3.data);printf(%s\n,mymsg_4.data);//3、删除消息队列IPC对象msgctlmsgctl(msgid,IPC_RMID,NULL);return 0;
}
结果队列1证明了消息的有序性