我的 Linux 机器中没有/dev/shm(我手动卸载并删除了它),但是当我在我的应用程序中尝试 shm_open() 时,如 shm_open("foo", O_CREAT | O_RDWR, 0666) ;
,它仍然成功并返回 3 作为 fd。那么在这种情况下共享内存是在哪里创建的呢?它仍然可以与其他进程共享吗?
在这种情况下,为什么 shm_open
仅在以 root 用户身份运行时成功,但以非 root 用户身份运行时失败?
最佳答案
shm_open
如果共享内存对象不存在则创建它。
您的 fd
应该是一个有效的文件描述符,您可以使用 mmap
与其他进程共享此内存区域。
当您卸载并“删除”/dev/shm
挂载点时,实际上没有任何改变。它仅用作拥有基于 RAM 的文件系统的访问点。
关于linux - 为什么即使没有/dev/shm shm_open() 也会成功?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56077527/