我正在尝试创建一个由服务器和几个尝试相互通信的客户端组成的系统。客户端将数据放入共享内存(使用ftok / shmget创建),然后能够将数据写入此内存。这些包括2个独立的程序。
服务器读取客户端写入共享内存的值,并将它们写入文件。我可以让客户端将数据写入共享内存,并让服务器读取数据,但是我在锁定共享内存时遇到问题,因此多个客户端不能同时写入。
我尝试创建一个信号量(使用sem_open),但这不是在进程之间共享。我如何在进程(或互斥体之间)共享信号量,因为它们可能会更好地工作?
答案 0 :(得分:2)
您想使用命名信号量或互斥:
int permissions = 0644;
sem_t *shared_sem;
unsigned int inital_value = 1;
shared_sem = sem_open("SharedSem", O_CREAT, permissions, inital_value);
另外,请确保正确设置权限。
答案 1 :(得分:1)
使用“命名”信号量...例如两个进程使用的“/ someuniquename”。