- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
10.3.2 UNIX系统中的系统调用(续) ? 消息队列的建立和消息描述符的获取 在UNIX系统中每个消息队列除了用户指定的名字外,为方便用户访问还有一个消息队列描述符。 进程利用系统调用msgget创建消息队列并返回一个指定消息队列的消息描述符。其它进程则用该消息队列描述符访问消息队列。 msgget系统调用格式为 int msgget(key,msgflg); key_t key; int msgflg; 该系统调用返回值是消息描述符,它是搜索消息队列头表表项的索引。其中,key是用户指定的消息队列关键词;msgget是用户设置的标志和访问方式。 10.3.2 UNIX系统中的系统调用(续) ? 消息的发送和接收 进程用msgsnd系统调用发送消息和用msgrcv系统调用接收消息。 系统调用msgsnd的格式为 int msgsnd(msgid,msgp,msgsz,msgflg); int msgid,msgsz,msgflg; struct msgbuf * msgp; 其中,msgid是由msgget返回的消息队列描述符;msgp是指向用户消息缓冲区的指针。在消息缓冲区msgbuf中有消息类型和消息正文 { long mtype; /*消息类型*/ char mtext[ ]; /*消息的正文*/ } msgsz是mtext长度的字节数;msgflg规定无内存空间存储消息时,进程是等待还是立即返回。 10.3.2 UNIX系统中的系统调用(续) 系统调用msgrcv的格式为 int msgrcv(msgid,msgp,msgsz,msgtpy,msgflg); int msgid,msgsz,msgflg; long msgtpy; struct msgbuf * msgp; 其中,msgid、msgp、msgsz、msgflg与msgsnd中的对应参数相同,msgtpy是选读的消息类型。 Msgtpy有三种不同情况处理: msgtpy=0,核心寻找消息队列中的第一个消息并返回给调用者。 msgtpy为正整数,核心返回给定消息类型的第一个消息; msgtpy为负整数,核心在其类型值小于或等于msgtpy绝对值的所有消息中,选出其类型值最低的一个消息返回。 10.3.2 UNIX系统中的系统调用(续) ? 消息队列的操作 用户建立了消息队列后用msgctl系统调用读取消息队列的状态信息同时还可对消息队列的一些信息进行修改。 msgctl系统调用格式为: int msgctl(msgid,cmd,buf); int msgid,cmd; struct msgid_ds *buf; 其中,cmd是规定的命令,有三种类型: ? IPC_STAT,是用于查询消息队列中的消息数目、队列中的最大字节数、最后一个发送消息的进程标志符、发送时间等信息的命令; ? IPC_SET,用于设置和改变消息队列的用户标志符、消息队列的权限等属性的命令; ? IPC_RMID,消除消息队列的标志符命令。 10.3.2 UNIX系统中的系统调用(续) 下面是消息通信的C程序代码: #include sys/types.h #include sys/ipc.h #include sys/msg.h ? #define MYMSGKEY 98 struct msgform /*消息缓冲区内容*/ { long mtype; /*消息类型*/ char mtext [50]; /*消息正文*/ }; ? int main () { struct msgform msg, msg2; int msgid,pid,*pint; 10.3.2 UNIX系统中的系统调用(续) msgid=msgget(MYMSGKEY,IPC_CREAT|0600); /*创建消息队列,得到消息描述符msgid*/ ? pid=getpid(); pint=(int*)msg.mtext; *pint=pid; /*把进程标志符拷贝到消息正文*/ msg.mtype=666; ? pid = fork(); ? if (pid0) { perror(could not create subprocess); exit(2); 10.3.2 UNIX系
您可能关注的文档
- 计量营销学 教学课件 作者 田广 chapter10 促销.ppt
- 计量营销学 教学课件 作者 田广 chapter11 广告与媒体.ppt
- 计量营销学 教学课件 作者 田广 chapter12 市场营销与财务.ppt
- 计量营销学 教学课件 作者 田广 chapter13 计量指标与恒等式.ppt
- 计算方法 教学课件 徐士良 第二章.ppt
- 计算方法 教学课件 徐士良 第三章.ppt
- 计算方法 教学课件 徐士良 第一章.ppt
- 计算方法 教学课件 作者 江爱民 主编 张有正 副主编 nn01.ppt
- 计算方法 教学课件 作者 江爱民 主编 张有正 副主编 nn02.ppt
- 计算方法 教学课件 作者 江爱民 主编 张有正 副主编 nn03.ppt
- 计算机操作系统 教学课件 作者 刘循 朱敏 文艺 第11章 操作系统的性能指标.ppt
- 计算机操作系统 教学课件 作者 刘循 朱敏 文艺习题答案 练习答案.doc
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第2章 进程管理1——进程描述与控制.ppt
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第2章 进程管理2——进程同步与通信.ppt
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第2章 进程管理3——进程调度与死锁.ppt
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第3章 存储管理1——页式存储管理.ppt
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第3章 存储管理2——段式存储管理.ppt
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第4章 设备管理1——IO系统.ppt
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第4章 设备管理2——磁盘、缓冲管理.ppt
- 计算机操作系统 教学课件 作者 郁红英 冯庚豹1 第5章 文件管理1——文件组织与目录.ppt
最近下载
- 成人胃残余量超声监测技术规范.docx VIP
- 金属冶炼企业安全生产管理人员:事故应急处置和案例分析.ppt VIP
- 采购降本推进计划.pdf VIP
- 定制产品合同协议.docx VIP
- 恒大地下车库VI标识标牌标准化方案(超豪华版)恒大地产集团.pdf VIP
- 【教学课件】《人体对外界环境的感知》(人教).ppt VIP
- 滚动轴承外球面球轴承和偏心套外形尺寸.pdf VIP
- 第一单元第四课《上学路上》教案 湘美版(2024)一年级上册.doc VIP
- 突发事件应急预案.doc VIP
- 2024年03月上海市公安局浦东分局2024年上半年度招考文员笔试上岸试题历年典型考题与考点剖析附带答案解析.docx VIP
文档评论(0)