0

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

服务器读取客户端写入共享内存的值,并将它们写入文件。我可以让客户端将数据写入共享内存,让服务器读取数据,但我无法锁定共享内存,因此多个客户端不会同时写入。

我尝试创建一个信号量(使用 sem_open),但这不是在进程之间共享的。如何在进程(或互斥体,因为这些可能会更好)之间共享信号量?

4

2 回答 2

2

您想使用命名信号量或互斥量:

int permissions = 0644;
sem_t *shared_sem;
unsigned int inital_value = 1;

shared_sem = sem_open("SharedSem", O_CREAT, permissions, inital_value);

另外,请确保您正确设置了权限。

于 2012-10-03T02:13:40.617 回答
1

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

于 2012-10-03T01:52:11.743 回答