1.root用户下使用shm_open创建共享内存时,用其他的用户登录后不能够连接到该共享内存,查看出错信息发现时因为权限不够。
后修改创建的时的权限就解决了。具体如下:
//系统错误号
errno = 0;
int fd = shm_open(ShmName, O_RDWR | O_CREAT | O_EXCL, (S_IRWXO | S_IRWXG | S_IRWXU));
if ( errno == EEXIST ) // <ShmName> exist
{
creator = false;
//fd = shm_open(ShmName, O_RDWR, 0);
fd = shm_open(ShmName, O_RDWR, (S_IRWXO | S_IRWXG | S_IRWXU));
}
fchmod(fd, (S_IRWXO | S_IRWXG | S_IRWXU)); /* o/g/u */
本文解决了一个特定的问题:当root用户创建共享内存后,其他用户因权限不足无法访问。通过调整shm_open函数中的权限参数,实现了不同用户间共享内存的有效访问。
948

被折叠的 条评论
为什么被折叠?



