共享内存意味着一个进程将创建其他进程可以访问的内存部分。
我的问题是:其他进程如何知道创建的共享内存shmid
(即shmid=shmget(key-t,size,permission);
)?
最佳答案
简单来说:创建共享内存的进程定义名称和权限(登录用户的进程)。
基本上你创建一个文件:
file_descriptor = shm_open("/some.shared.memory",
(O_CREAT | O_RDWR),
(S_IREAD | S_IWRITE))
或者如果它存在,您可以打开它:
file_descriptor = shm_open("/some.shared.memory",
(O_CREAT | O_EXCL | O_RDWR),
(S_IREAD | S_IWRITE))
因此,名称“/some.shared.memory”是查找共享段的方法。 (注意标志)
- 看看这里 http://www.kernel.org/doc/man-pages/online/pages/man7/shm_overview.7.html
- 在 Google 上搜索“shm_open example”,您会发现很多示例。
- 创建文件的过程将确定权限(所有者+组) 请参阅 chown 命令和 fchmod 函数,您可以调用它们来设置权限。另请查看umask。
关于linux - Linux 中的共享内存(ipc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5270587/