2012-12-02 35 views
0

假設我們請求共享內存並將其附加到我們程序的主進程。我們是否應該在分叉進程終止之前分離共享內存

該程序創建了多個進程。 正如shmat的說明所示:

在fork(2)後,子繼承附加的共享內存段。

因此,我們不必將共享內存附加到子進程。
但分離它呢?我們是否應該在孩子的代碼上做呢?
或者只是在主進程中分離共享內存並銷燬它就夠了?

+1

分離共享內存段就像關閉打開的文件句柄 - 當進程終止(任意或不會)時,它由大多數操作系統內核自動執行,但良好的編程實踐要求您明確地執行。 –

+0

@HristoIliev:這也是我的想法。離開它而不分離會導致懸掛指針。 – Chris

回答

0

這真的取決於你在做什麼。但是如果您打電話給execve或其堂兄,它會分離共享內存段。

+0

我根本不叫execve。子進程退出後,它完成了它的工作(這是一個客戶端 - 服務器任務) – Chris

相關問題