我在進程之間使用boost :: interprocess :: shared_memory_object。如何測試boost共享內存對象是否被刪除?
進程(服務器)創建共享內存對象,其他進程(客戶端)打開該共享內存對象。但是,客戶端進程如何確定共享內存對象是否被服務器進程刪除?
As boost documentation states,當請求刪除共享內存時,它將不會被刪除,直到所有其他引用取消引用爲止。因此,即使服務器進程(試圖)刪除共享內存對象,該共享內存對象也不會被刪除,因此,其他客戶端進程無法知道該進程是否被刪除。
由於引用緩存,我需要這種刪除檢測。我的意思是,客戶端進程存儲對共享內存的引用,並在需要時重用它。但是,當服務器進程刪除共享內存並使用相同名稱重新創建共享內存時,我只希望我的客戶端進程檢測到這種重新創建並更新對新創建的共享內存對象的引用。
您可以使用unix ipcs命令監視共享內存使用情況,但它可能無助於您的原因 – Arunmu 2011-04-27 04:50:40