From 84bb801b6e4979e6fdcb77f6f434926662408a30 Mon Sep 17 00:00:00 2001 From: mutouyun Date: Sun, 1 Dec 2024 19:53:40 +0800 Subject: [PATCH] Try to fix a communication problem caused by different permissions under linux --- src/libipc/platform/posix/shm_posix.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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;