Writer终止时,共享内存Reader(只读)将挂起

|| 在Linux C中,使用共享内存,我有一个Writer进程和许多Reader。 Writer终止时,所有正在运行的Reader都将挂起。编写器终止时会执行shm_unlink。 我认为,内核可能了解Readers并且可以继续阅读,可能是错误的。当然,数据不会改变,因此读者可以知道何时结束。 任何想法如何做到这一点?     
已邀请:
您可以在共享内存中创建的标头中包含一个标志,以指示EOF。您可能需要定期更新时间戳以检测写入器不干净的终止/ 您还可以使用shmctl来查找附加人员的数量,这可能有助于您确定编写者是否离开了。 您也可以尝试重新附加/ fstat以验证该段未被删除。 如果这些答案不令人满意,请告诉我们它是POSIX还是System V共享内存。     
在linux中,内核不了解您的读者或作家(或者,不知道是哪个)。
shm_unlink
只是删除名字;它不会删除shmem段,直到所有用户取消映射并关闭它或终止。如果您要让这些阅读器/编写器进行交流并阻止pshared互斥锁/信号量,那么当作者去世时,您的确可能会死于悬挂式阅读器。最好让作者在队列中留下一条消息,以告知读者它正在终止。     

要回复问题请先登录注册