在 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/