我正在像这样创建一个新的共享内存对象
int fd = shm_open("somekey", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG);
返回值很好,我希望在/ dev / shm中找到类似以下内容的东西
-rwxrwx--- 1 root group 4096 Jun 27 19:08 somekey
但是文件中的写访问权限丢失了,我也不知道为什么。
-rwxr-x--- 1 root group 4096 Jun 27 19:08 somekey
答案 0 :(得分:1)
您的问题是以下线程的重复内容
POSIX shared memory and semaphores permissions set incorrectly by open calls
mode_t old_umask = umask(0);
int fd = shm_open("somekey", O_CREAT | O_RDWR, S_IRWXU | S_IRWXG);
// restore old
umask(old_umask);
答案 1 :(得分:0)
http://man7.org/linux/man-pages/man3/shm_open.3.html
根据模式的低9位设置对象的允许位,除了清除在过程文件模式创建掩码(请参见umask(2))中设置的那些位新对象。
就像做普通的open
一样,这只是umask的工作。