C++ - 进程之间共享的互斥体

C++ - Mutex Shared Between Processes

本文关键字:共享 进程 之间 C++      更新时间:2023-10-16

我正在尝试创建一个由服务器和几个尝试相互通信的客户端组成的系统。客户端将数据放入共享内存(使用 ftok/shmget 创建),然后能够将数据写入此内存。这些由2个单独的程序组成。

服务器读取客户端写入共享内存的值,并将其写入文件。我可以让客户端将数据写入共享内存,让服务器读取数据,但我在锁定共享内存时遇到问题,因此多个客户端不会同时写入。

我尝试创建信号量(使用 sem_open),但这在进程之间不共享。如何在进程(或互斥锁,因为它们可能会更好地工作)之间共享信号量?

要使用命名信号量或互斥锁:

int permissions = 0644;
sem_t *shared_sem;
unsigned int inital_value = 1;
shared_sem = sem_open("SharedSem", O_CREAT, permissions, inital_value);

此外,请确保正确设置权限。

使用"命名"信号量...例如,两个进程都使用的"/someuniquename"。