diff --git a/src/libipc/platform/posix/shm_posix.cpp b/src/libipc/platform/posix/shm_posix.cpp index 74add01..7e46e06 100644 --- a/src/libipc/platform/posix/shm_posix.cpp +++ b/src/libipc/platform/posix/shm_posix.cpp @@ -68,13 +68,14 @@ id_t acquire(char const * name, std::size_t size, unsigned mode) { flag |= O_CREAT; break; } - int fd = ::shm_open(op_name.c_str(), flag, S_IRUSR | S_IWUSR | - S_IRGRP | S_IWGRP | - S_IROTH | S_IWOTH); + int fd = ::shm_open(op_name.c_str(), flag, 0); if (fd == -1) { ipc::error("fail shm_open[%d]: %s\n", errno, op_name.c_str()); return nullptr; } + ::fchmod(fd, S_IRUSR | S_IWUSR | + S_IRGRP | S_IWGRP | + S_IROTH | S_IWOTH); auto ii = mem::alloc(); ii->fd_ = fd; ii->size_ = size;