【发布时间】:2016-01-25 21:02:16
【问题描述】:
我有一个父进程分配共享内存并写入它。 它还启动只读取共享内存的子进程。但是,我无法控制这些子进程的洞察力。它们是由其他程序员编写的。这些子进程不应该写入共享内存。所以我想知道我是否可以允许他们读取权限,但不允许写入权限。
但是对于shmget,您只能指定一般权限,而无法区分读写访问权限。
我还考虑过切换到shm_open 和mmap,因为您似乎可以使用O_RDONLY 打开共享内存,这会强制在mmap 调用中使用PROT_READ(只读访问) .是否有可能在父进程中创建两个带有shm_open 的文件描述符:一个带有O_RDONLY,一个带有O_RDWR,然后将O_RDONLY 一个传递给子进程,然后子进程可以将其映射到它们的进程空间?当然,孩子们不应该拥有使用shm_open打开共享内存的权限,因为这样他们就可以使用O_RDWR打开共享内存。
还是我理解错了?这是我想要的吗?
【问题讨论】:
标签: c++ linux shared-memory