c - 共享内存 Reader(只读)在 Writer 终止时挂起

标签 c memory shared writer

在 linux、C 中,使用共享内存,我有一个 Writer 进程和许多 Readers。

当 Writer 终止时,所有正在运行的 Reader 都会挂起。 Writer 在终止时确实执行 shm_unlink。

我想,可能是错误的,内核知道 Readers 并且他们可以继续阅读。当然数据是不会改变的,所以读者可以知道什么时候可以优雅地结束。

有什么想法可以实现吗?

最佳答案

您可以在共享内存中创建的 header 中使用标志来指示 EOF。您可以定期更新时间戳以检测编写器不干净终止/

您还可以使用 shmctl 来查找附加人数,这可能有助于您判断作者是否已经离开。

您也可以尝试重新附加/fstat 以验证该段未被删除。

如果这些答案不令人满意,请告诉我们是 POSIX 还是 System V 共享内存。

关于c - 共享内存 Reader(只读)在 Writer 终止时挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6114452/

相关文章:

c - MIPS/C 中的钻石排序

c - AMESim 中二维数组的 malloc/free 问题

c - 为什么是这个输出?

javascript - JavaScript 内存在浏览器中是如何工作的?

c++ - 在 Windows 上同时使用 .so 和 .dll

c - 有没有办法在保持缓存局部性的同时计算标量积?

c - 在 C 递归函数中作为引用传递的数组的动态内存分配

python - 如何在 Python 中访问品牌和频率等内存信息?

c++ - 共享库的 g++ 链接未编译

c - 如何让进程共享内存(c,linux)?