linux - 为什么即使没有/dev/shm shm_open() 也会成功?

标签 linux ipc shared-memory

我的 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/

相关文章:

linux - Git 符号链接(symbolic link) - Windows 工作站 - Linux 服务器

c - C 语言的共享内存代码片段

multithreading - 如何使用共享内存修改一个线程中的值并读取另一个线程中的值?

python - 使用 grep 或 python 比较大文件

linux - 将文件复制到多个文件夹 Linux

linux - Email命令的异常处理

c - 如何正确地释放进程之间的共享内存?

PHP 和 Linux IPC 套接字(和 Dropbox)

c++ - 命名管道在 Windows 中如何工作?

python - 在 python 代码和 c++ 代码 (IPC) 之间共享信息