我在进程之间使用boost :: interprocess :: shared_memory_object。如何测试boost共享内存对象是否被删除?
进程(服务器)创建共享内存对象,其他进程(客户端)打开该共享内存对象。但是,客户端进程如何确定共享内存对象是否被服务器进程删除?
As boost documentation states,当请求删除共享内存时,它将不会被删除,直到所有其他引用取消引用为止。因此,即使服务器进程(试图)删除共享内存对象,该共享内存对象也不会被删除,因此,其他客户端进程无法知道该进程是否被删除。
由于引用缓存,我需要这种删除检测。我的意思是,客户端进程存储对共享内存的引用,并在需要时重用它。但是,当服务器进程删除共享内存并使用相同名称重新创建共享内存时,我只希望我的客户端进程检测到这种重新创建并更新对新创建的共享内存对象的引用。
您可以使用unix ipcs命令监视共享内存使用情况,但它可能无助于您的原因 – Arunmu 2011-04-27 04:50:40