有人可以解释一下上面代码中的 shmget() unix 系统调用中的 IPC_CREAT |0666 到底做了什么,我知道 0666 在这里是八进制值,但更改它根本没有任何影响。
小智 5
0666 是 linux 中通常的访问权限,采用 rwx 八进制格式并具有序列(所有者-组-用户)。IPC_CREAT 在 sys/ipc.h 头文件中定义的十进制值为 512。
IPC_CREAT|0666 基本上执行按位或两者的操作以在 中设置标志shmget,并且它们都只是执行其通常的功能。0666 设置内存段的访问权限,而 IPC_CREAT 告诉系统为共享内存创建一个新的内存段。
如果未使用此标志,shmget()则将查找与密钥关联的段并检查用户是否有权访问该段。