c++ - 共享内存信号量

标签 c++ c unix concurrency shared-memory

我有 10 个进程在运行,每个进程都写入同一个文件。我不想要多个编写器,所以基本上我正在寻找一个互斥/二进制信号量来保护文件写入。问题是我不能在 10 个进程之间共享信号量,所以我正在考虑在 10 个进程之间使用共享内存,并将信号量放在共享内存中,以便每个进程都可以访问它。

任何人都可以指点我在 C/C++ for Unix 中的相关文档吗?使用此结构的示例代码会很棒。

谢谢

最佳答案

将信号量放在共享内存中并不是解决这个问题的最佳方法(如果它能起作用的话)。您应该研究文件锁定,这是一种 UNIX 功能,专门设计用于在文件编写者之间提供排他性。

具体来说,查看:

有关更多说明 Material ,请参阅 Advanced Programming in the UNIX Environment, section 14.3

关于c++ - 共享内存信号量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1409597/

相关文章:

linux - 递归grep不同文件中的唯一模式

c++ - 调查错误的 free() 指针引用

c++ - 两个标准类型的两个模板函数

c++ - 防止编码器在物理模拟中出现错误 "forget to divide by time"

c - undefined reference ... 使用 gtk 图形

python - 从linux中的字符串列表中扫描数据

c++ - 仅在接口(interface)中包含 header ,不在实现中包含 header

c - 如何在服务器线程和客户端线程之间同步?

python - 当映射不是一对一时,ctypes 如何将 C 结构体成员映射到 Python 类 _fields_?

flash - 可以通过终端在 headless 服务器上启动 Flash 视频播放