- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章消息队列和共享内存.ppt
消息队列和共享内存 消息队列是消息的链表,存放在内存中,由内核维护 ?消息队列的特点 1、消息队列中的消息是有类型的。 2、消息队列中的消息是有格式的。 3、消息队列可以实现消息的随机查询。消息不一定要以先进先出的次序读取,编程时可以按消息的类型读取。 4、消息队列允许一个或多个进程向它写入或者读取消息。 5、与无名管道、命名管道一样,从消息队列中读出消息,消息队列中对应的数据都会被删除。 6、每个消息队列都有消息队列标识符,消息队列的标识符在整个系统中是唯一的。 7、只有内核重启或人工删除消息队列时,该消息队列才会被删除。若不人工删除消息队列,消息队列会一直存在于系统中。 System V提供的IPC通信机制需要一个key值,通过key值就可在系统内获得一个唯一的消息队列标识符。 ?key值可以是人为指定的,也可以通过ftok函数获得。 #include sys/types.h #include sys/ipc.h key_t ftok(const char *pathname, int proj_id); 功能: 获得项目相关的唯一的IPC键值。 参数: pathname:路径名 proj_id:项目ID,非0整数(只有低8位有效) 返回值: 成功返回key值,失败返回-1。 创建消息队列: #include sys/msg.h int msgget(key_t key, int msgflg); 功能: 创建一个新的或打开一个已经存在的消息队列。不同的进程调用此函数,只要用相同的key值就能得到同一个消息队列的标识符。 参数: key:IPC键值。 msgflg:标识函数的行为及消息队列的权限。 参数: msgflg的取值: IPC_CREAT:创建消息队列。 IPC_EXCL:检测消息队列是否存在。 位或权限位:消息队列位或权限位后可以设置消息队列的访问权限,格式和open函数的mode_t一样,但可执行权限未使用。 返回值: 成功:消息队列的标识符,失败:返回-1。 使用shell命令操作消息队列: 查看消息队列 ipcs -q 删除消息队列 ipcrm -q msqid 消息队列的消息的格式。 typedef struct _msg { long mtype;/*消息类型*/ char mtext[100];/*消息正文*/ .../*消息的正文可以有多个成员*/ }MSG; 消息类型必须是长整型的,而且必须是结构体类 型的第一个成员,类型下面是消息正文,正文可以 有多个成员(正文成员可以是任意数据类型的)。 发送消息: #include sys/msg.h int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); 功能: 将新消息添加到消息队列。 参数: msqid:消息队列的标识符。 msgp:待发送消息结构体的地址。 msgsz:消息正文的字节数。 msgflg:函数的控制属性0:msgsnd调用阻塞直到条件满足为止。IPC_NOWAIT: 若消息没有立即发送则调用该函数的进程会立即返回。 返回值:成功:0;失败:返回-1。 接收消息: #include sys/msg.h ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); 功能: 从标识符为msqid的消息队列中接收一个消息。一旦接收消息成功,则消息在消息队列中被删除。 参数: msqid:消息队列的标识符,代表要从哪个消息列中获取消息。 msgp:存放消息结构体的地址。 msgsz:消息正文的字节数。 msgtyp:消息的类型、可以有以下几种类型msgtyp = 0:返回队列中的第一个消息 msgtyp 0:返回队列中消息类型为msgtyp的消息 msgtyp 0:返回队列中消息类型值小于或等于msgtyp绝对值的消息,如果这种消息有若干个,则取类型值最小的消息。 注意: 若消息队列中有多种类型的消息,msgrcv获取消息的时候按消息类型获取,不是先进先出的。 在获取某类型消息的时,若队列中有多条此类型的消息,则获取最先添加的消息,即先进先出原则。 msgflg:函数的控制属性0:msgrcv调用阻塞直到接收消息成功为止。 MSG_NOERROR:若返回的消息字节数比nbytes字节数多,则消息就会截短到nbytes字节,且不通知消息发送进程。 IPC_NOWAIT:调用进程会立即返回。若没有收到消息则立即返回-1。 返回值: 成功返回读取消息的长度,失败返回-1。 消息队列的控制 #include sys/msg.h int msgctl(int msq
您可能关注的文档
- 爱岗敬业是教师的基本素质.doc
- 爱考北京大学固体地球物理学考研专业课资料册含真题,大纲,分数线,参考书.pdf
- 爱荷华大学管理与组织本科.pdf
- 父母教养方式问卷_PBI_的信效度研究_蒋奖.pdf
- 物流在日本的发展历程与未来趋势.pdf
- 物流管理人员的综合能力提升训练.doc
- 物理研究性学习设计方案模板邓创钦.doc
- 物联网与社会生活研究性学习开题报告.doc
- 特殊年代的爱——论《美丽的南方》中几种不同的爱情.pdf
- 特种设备安全管理人员职责(安委办).doc
- 统编版语文5年级下册全册教学课件(2025年3月修订).pptx
- 2025年春北师大版数学4年级下册全册教学课件.pptx
- 2025年春人教版1年级下册数学全册课件.pptx
- 统编版语文5年级下册全册课件(2025年2月修订).pptx
- 人教版数学2年级下册全册课件(2025年2月修订).pptx
- 新人教PEP版英语3年级上册全册教学课件(新版教材)(1).pptx
- 湘少版英语5年级下册全册课件(2025年3月修订).pptx
- 人教版数学2年级下册全册课件(2025年2月修订).pptx
- 2025年新人教PEP版英语3年级下册全册教学课件.pptx
- 新人教PEP版英语3年级上册全册课件(1).pptx
最近下载
- 铁路通信工(技师)技能鉴定理论考试题及答案.doc VIP
- 党建与银行业务综合知识试卷真题及答案.docx VIP
- 2025年女性健康食品饮料趋势报告.pdf VIP
- 智能化工程售后服务方案.docx VIP
- 中国行业标准 YC/T 590-2021卷烟工业企业设备综合效率测评导则.pdf
- 铁路通信工(初级)技能鉴定理论考试题及答案.doc VIP
- (高清版)B-T 18380.12-2022 电缆和光缆在火焰条件下的燃烧试验 第12部分:单根绝缘电线电缆火焰垂直蔓延试验 1kW预混合型火焰试验方法.pdf VIP
- 化妆品包材行业基础知识.pdf VIP
- 校园文化建设服务承诺及质量保障措施.doc VIP
- 化验工题库.doc VIP
文档评论(0)