2014-03-27 145 views
1

我在Suse Linux上的兩個進程之間使用共享內存,我想知道如何避免共享內存泄漏,以防一個進程崩潰或兩者兼而有之。在這種情況下會發生泄漏嗎?如果是的話,我該如何避免它?如何避免共享內存泄漏

+0

改爲使用共享的'mmap()'文件映射? – twalberg

+0

它有什麼用? – Rom098

+0

因爲當一個進程死亡時,它所映射的內存區域也會消失,這與共享內存段可能會成爲孤兒的情況不同。當然,在這種情況下,如果進程意外死亡,則該文件仍然存在,但它不再映射到消耗內存資源的內存中。 – twalberg

回答

1

您可以爲共享內存區域中的兩個計數器分配空間:每個進程一個。每隔幾秒鐘,每個進程增加其計數器,並檢查另一個計數器是否已增加。這使得這兩個進程或外部看門狗很容易在有人崩潰或退出時拆除共享內存。