- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
OS第六次上机(MR)创新
* 计算机操作系统 第六次上机 * 消息传递的相关系统调用 (教材P63、P367)创建一个新队列或打开一个现存的队列 格式:int msgget(key,flag); 功能:获得一个消息的描述符,该描述符指定一个消息队列以便用于其他系统调用。 返回值:若成功则返回消息队列ID,若出错则返回-1。 * 消息传递的相关系统调用 格式:int msgget(key,flag) key:消息队列的键; flag:由操作允许权和控制命令值相”|”得到 权限 位 用户读 0400 用户写 0200 组读 0040 组写 0020 其他读 0004 其他写 0002 例:msgqid=msgget(MSGKEY,0777); msgqid=msgget(MSGKEY,0777|IPC_CREAT); * 消息传递的相关系统调用 将数据放到消息队列 格式:int msgsnd(id,*msgp,size,flag); 功能:发送一消息。 返回值:若成功则返回0,若出错则返回-1。 消息的格式:struct mymesg{ long mtype; char mtext[512];} * 消息传递的相关系统调用 格式:int msgsnd(id,*msgp,size,flag); id:是消息队列的描述符 msgp:是指向消息结构体的指针 size:消息的长度 flag:可以指定为IP_NOWAIT,若消息队列已满,则使得msgsnd立即出错返回EAGAIN 例:msgsnd(msgqid,msg,1024,0); * 消息传递的相关系统调用 从消息队列中取出消息 格式:int msgrcv(id,*msgp,size,type,flag) 功能:接受一消息。 返回值:若成功则返回消息的数据部分长度,若出错则返回-1。 * 消息传递的相关系统调用 格式:int msgrcv(id,*msgp,size,type,flag) type:消息的类型 type==0:返回队列中的第一个消息 type0:返回队列中消息类型为type的第一个消息 type0:返回队列中消息类型值小于或等于type绝对值的消息,如果这种消息有若干个,则取类型值最小的消息 例:msgrcv(msgqid,msg,1030,0,0); * 消息传递的相关系统调用 删除消息队列及其它操作 格式:int msgctl(id,cmd,buf) 功能:查询一个消息描述符的状态,设置它的状态及删除一个消息描述符。 返回值:若成功则返回0,若出错则返回-1。 * 消息传递的相关系统调用 格式:int msgctl(id,cmd,buf) cmd: IPC_RMID:从系统中删除该消息队列及仍在该队列中的所有数据 IPC_STAT:取此队列的首标读入buf IPC_SET:根据buf指向结构中的值,设置与此队列相关的结构 例:msgctl(msgqid,IPC_RMID,0); * 上机要求 消息的创建、发送和接收 使用系统调用msgget(),msgsnd(), msgrev()及msgctl()编制一长度为1K的消息发送和接收的程序。 * * * 上机要求 改写上一个程序,实现发送端从键盘上随机输入要传送的消息内容,接收端当收到消息后,打印消息内容。 * 共享存储区通信的实现 共享存储区的建立 格式:int shmget(key,size,flag); 功能:利用系统调用shmget( )建立一块共享存储区。该系统调用将返回该共享存储区的描述符shmid;若尚未建立,便为进程建立一个指定大小的共享存储区。 返回值:若成功则返回共享存储ID,若出错则返回-1。 例:shmid=shmget(SHMKEY,1024,0777|IPC_CREAT); shmid=shmget(SHMKEY,1024,0777); * 共享存储区通信的实现 共享存储区的操纵 格式:int shmctl(shmid,cmd,*buf); 功能:可以用shmctl( )系统调用对共享存储区的状态信息进行查询,如其长度、所连接的进程数、创建者标识符等;也可设置或修改其属性,如共享存储区的许可权、当前连接的进程计数等;还可用来对共享存储区加锁或解锁,以及修改共享存储区标识符等。 返回值:若成功则返回0,若出错则返回-1。 * 共享存储区通信的实现 格式:int shmctl(shmid,cmd,*buf); cmd: IPC_RMID:从系统中删除该共享存储段 IPC_STAT:返回包含在指定的shmid相关数据结构中的状态信息,并读入buf IPC_SET:根据buf指向结构中的值,设置指
您可能关注的文档
最近下载
- 2022年11月26日四川省属事业单位联考《综合知识》真题.pdf VIP
- 2022年6月18日四川省事业单位联考《综合知识》试卷试题真题答案解析.doc VIP
- 《房屋建筑制图统一标准》GB50001-2010.pdf
- 2022年5月22日四川成都市属事业单位招聘考试《公共基础知识》真题(含答案).pdf VIP
- 二零二三年4月9日四川省事业单位联考《综合知识》精选题.pdf VIP
- 新股骨颈骨折病人的护理ppt课件.ppt
- 2023年10月29日四川省事业单位联考《综合知识》试题及答案解析.pdf VIP
- 2025至2030全球及中国门窗制造商行业项目调研及市场前景预测评估报告.docx
- 风电项目考察报告编制模板.docx VIP
- 肝癌患者生命质量测定量表.pdf VIP
原创力文档


文档评论(0)