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 */