3
A
回答
4
这只是一个系统V IPC(进程间通信)键,以便不同的过程可以创建或附连到共享存储器的同一块。密钥通常使用ftok()
创建,它将完全指定的文件名和项目ID转换为可用的密钥。
由于应用程序通常可以在其所有不同的进程中使用相同的文件名(文件名通常是与您的应用程序关联的配置文件),因此每个不同的进程获取相同的密钥(或者,如果使用项目ID指定多个共享内存段,同一组键)。
例如,我们曾经所使用由我们的lex/yacc的代码处理的配置文件,所以我们只使用的路径名和一个项目ID为每个不同的共享存储器块(那里根据目的是三个或四个应用程序正在讨论的过程)。这实际上提出了很多的意义,因为它是解析和评估的数据从已存储在所述共享存储器块该配置文件。
由于在系统上没有其他应用程序应该使用我们的配置文件制作的关键,没有冲突。关键本身不限于共享内存,它也可以用于信号量和其他IPC机制。
0
posix共享内存函数(shm_open和friends)有一个更友好的用户界面,它们可以接受唯一的文件名,这些文件名必须被应用程序用来打开同一个共享内存块。
话虽如此,在Linux下的/ dev/shm中打开一个文件通常也是可行的,然后使用MAP_SHARED进行映射,这实现了大致相同的效果。
相关问题
- 1. Linux的RSS和共享内存
- 2. c/linux-ftruncate和POSIX共享内存段
- 3. Linux共享内存分段故障
- 4. Linux共享内存分配行为
- 5. linux共享内存实际在哪里?
- 6. Linux共享内存:shmget()vs mmap()?
- 7. 进程共享内存不共享(c,linux)
- 8. 谁可以在Linux共享共享内存?
- 9. 在共享主机Linux帐户上使用共享内存
- 10. 内存共享
- 11. CUDA共享内存
- 12. C共享内存
- 13. 在共享内存
- 14. RDMA内存共享
- 15. 共享内存段
- 16. 通过共享内存共享指针
- 17. activerecord内存共享缓存
- 18. IPC与共享内存的共享内存有什么区别?
- 19. 共享内存段vs共享内存段
- 20. C++共享内存泄漏,如何清除共享内存?
- 21. Linux共享库
- 22. 将共享库共享到共享内存
- 23. 检查共享内存是否存在,以及是否存在共享内存
- 24. 增加共享内存的内存
- 25. linux共享c库不共享
- 26. 共享内存STL地图
- 27. 了解postgreSQL共享内存
- 28. PHP和共享内存
- 29. Java和C++共享内存
- 30. POSIX共享内存和msync
是的,关键是通常使用'ftok'创建(请参阅http://netbsd.gw.com/cgi-bin/man-cgi?ftok+3+NetBSD-current),并使用'shmget' 。 使用此键,'shmget'可以创建共享段,或者获得与键标识的现有段,这取决于你传递标志(见http://netbsd.gw.com/cgi-bin/man-cgi ?shmget的+ 2 + NetBSD当前)。 – tonio 2010-05-11 13:07:35