第4章进程间通信1(编辑修改稿)内容摘要:

共享存储区附接的虚地址。 若 shmaddr为 0 , 则由系统选择 一个适当的地址来附接该存储区; msgflg—— 规定了对该存储区的 操作权限 , 以及系统是否要对用户规定的地址做舍除 操作。 如果 msgflg中设置了 SHM_RND表示操作系统在必要时舍去这个地 址;如果设置了 SHM_RDONLY则表示只允许读 , msgflg为 0表示可读可写。 返回: 正确返回:共享存储区附接后的虚地址 ( viraddr)。 错误返回: 1 通常使用格式: viraddr = (char *)shmat(shmid,0,0) (字符型 ) viraddr = (int*)shmat(shmid,0,0) (数值型 ) 2020/10/7 操作系统与实验 第 4章 2 11 格式 : int shmdt(viraddr)。 功能 : 将一个共享存储区从指定进程的虚拟地址空间断开。 参数说明 : viraddr—— 系统调用 shmat()所返回的虚地址。 返回 : 正确返回: 0 错误返回: 1。 2020/10/7 操作系统与实验 第 4章 2 12 格式: Int shmctl(int shmid, int cmd, struct shmid_ds *buf) 功能: 对与共享存储区关联的各种参数进行操作 , 从而对共享存储区进行控制包括删除共享存储区。 参数说明: shmid—— 共享存储区的内部标识符 , 由 shmget( )调用返回; cmd—— 规定操作的类型。 可能为: IPC_STAT , IPC_SET , IPC_RMID( 删除 ) , SHM_LOCK。 buf—— 用户级数据结构地址 , 其结构类型与系统定义的 shmid_ds一致 ,可以用 0。 返回值: 正确返回: 0 错误返回: 1 通常使用的格式: shmctl(shmid,IPC_RMID,0); 对于共享内存的删除也要有权限,如超级用户进程等,所以上机实习时应该使用 root登录。 2020/10/7 操作系统与实验 第 4章 2 13 共享内存通信实现方法。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。