【发布时间】:2019-11-26 06:37:50
【问题描述】:
我正在编写一个共享库,它为其读取器和写入器进程提供读/写功能。 Reader 或 Writer 进程可以按任意顺序启动,也可以随时停止然后重新启动。
为了实现两个进程的上述场景,我将共享内存打开为O_CREATE:
g_shmfd = shm_open(SHM_NAME, O_CREAT | O_RDWR, 0666);
现在每当一个进程出现故障时,如果我shm_unlink,那么下一次我不想要打开新的共享内存对象。
如果我关闭了解决上述问题的 fd,但共享内存永远不会被此解决方法破坏。
实现多个进程始终打开一个已打开的共享内存对象的最佳方法是什么,并且只有在所有进程shm_unlink 它时才应该销毁它,而不仅仅是调用shm_unlink 销毁对象和下次shm_open 的单个进程创建一个新的共享内存对象。
【问题讨论】:
标签: shared-libraries ipc shared-memory