通过mmap()共享内存的特定进程

时间:2016-03-10 20:38:12

标签: memory linux-kernel shared-memory

我的问题很简单如何在允许读取和写入内存的进程之间共享内存。主要的是只有特定的进程(例如特定的PID)应该能够共享该内存。不是全部进程应该具有共享内存的能力。

1 个答案:

答案 0 :(得分:1)

一种选择是使用标准的Sys V IPC共享内存。调用shmget()后,使用shmctl()设置权限。仅向一个组/用户授予读写权限,并启动允许以特定用户身份访问此进程的进程。可以使用ipcs找到共享内存密钥和ID,您需要信任标准的基于unix用户/组的安全性才能完成这项工作。

另一种选择是实现共享内存驱动程序。类似于Android ashmem的东西。在驱动程序中,您可以验证尝试访问内存的调用方的PID / UID,并根据过滤器允许/拒绝请求。您还可以实现sysfs条目来修改这些过滤器。如果过滤器需要可配置,则需要再次信任基于Unix用户/组的安全性。如果您正在实施驱动程序,那么您将拥有大量安全选项