c - IPC_CREAT 有什么用? 0666 C 中 shmget() 函数中的标志

标签 c shared-memory

shmget for IPC in linux

有人可以解释一下上面代码中的 shmget() unix 系统调用中的 IPC_CREAT |0666 到底做了什么,我知道 0666 在这里是八进制值,但更改它根本没有任何影响。

最佳答案

0666 是 linux 中通常的访问权限,采用 rwx 八进制格式并具有序列(所有者-组-用户)。 IPC_CREAT 在 sys/ipc.h 头文件中定义的十进制值为 512。

IPC_CREAT|0666 基本上执行按位或两者的操作来设置 shmget 中的标志,并且它们都只是执行其通常的功能。
0666 设置内存段的访问权限,而
IPC_CREAT 告诉系统为共享内存创建一个新的内存段。

如果未使用此标志,则 shmget()将找到与 key 关联的段并检查用户是否有权访问该段。

关于c - IPC_CREAT 有什么用? 0666 C 中 shmget() 函数中的标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40380327/

相关文章:

c - 如何使用 scanf 输入坐标以及此函数中需要的字符

进程之间的python SharedMemory持久性

C# 使用 COM 对象在 C++ 应用程序和 C# 应用程序之间共享内存

winapi - (Win32) 堆在进程之间共享

c - 使用 C99 的 Netbeans C GCC

我们不能初始化自动数组变量吗?

确保元素位于结构开头的 C 宏

c - C中的结构(将值分配给结构数组)

c++ - 如果其中一个进程意外终止,进程间内存会发生什么情况?

c - 在取消链接和替换之前更改共享内存是否可以?