Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在尝试创建一个系统,该系统由一个服务器和几个尝试相互通信的客户端组成。客户端将数据放入共享内存(使用 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”。