shmdt与shmctl的区别
来源:互联网 发布:哪里注册域名比较好 编辑:程序博客网 时间:2024/05/04 04:53
先看看 shmctl()
原型: int shmctl ( int shmqid, int cmd, struct shmid_ds *buf );
返回:成功为 0 , 失败 为-1
这个特殊的调用和semctl()调用几乎相同,因此,这里不进行详细的讨论。有效命令的值是:
IPC_STAT :检索一个共享段的shmid_ds结构,把它存到buf参数的地址中。
IPC_SET :对一个共享段来说,从buf 参数中取值设置shmid_ds结构的ipc_perm域的值。
IPC_RMID :把一个段标记为删除
IPC_RMID 命令实际上不从内核删除一个段,而是仅仅把这个段标记为删除,实际的删除发生在最后一个进程离开这个共享段时。
当一个进程不再需要共享内存段时,它将调用shmdt()系统调用取消这个段,但是,这并不是从内核真正地删除这个段,而是把相关shmid_ds结构的 shm_nattch域的值减1,当这个值为0时,内核才从物理上删除这个共享段。
所以,如果我们能保证共享内存的每个进程最后都能调用到shmdt(),那么我们就没有必要再去调用shmctl(IPC_RMID)去删除这个内存段了。
- shmdt() 与 shmctl() 的区别
- shmdt与shmctl的区别
- shmdt与shmctl的区别
- 共享内存API函数 shmat() shmdt() shmctl()
- 共享内存函数(shmget、shmat、shmdt、shmctl)
- 共享内存 shmget()、shmat()、shmdt()、shmctl()
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- IPC--共享内存 Share Memory 实例(shmget shmat shmdt shmctl)
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- shmctl,shmat,shmget,shmdt函数原型及参数说明
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- 共享内存函数(shmget、shmat、shmdt、shmctl)及其范例
- 共享内存函数(shmget、shmat、shmdt、shmctl)
- 从windows系统跳跃到Linux系统的学习
- 【读书笔记】人件集
- 《启示录》读书笔记系列--笔记十九
- unity3d_iGUI_LRC歌词效果的实现
- 英语敢死队 第二周学习总结
- shmdt与shmctl的区别
- 【图解】Ogre1.8 SampleBrowser流程全面分析
- 常用的uboot的bootargs设置
- 【读书笔记】重构 改善既有代码的设计
- C#下收发邮箱的功能,JMAIL与openpop
- 搭建HTTP Live Streaming直播系统
- WINCE的BIB文件解析
- 驱动注册的probe函数
- unity3d_iGUI_图片拖动效果的实现