2011-11-15 68 views
2

如何清理進程(進程A)在終止時分配的所有資源?當進程A使用其他進程提供的服務時(A將使用IPC訪問另一進程提供的服務),進程A可以在另一個進程空間中分配資源。Linux中的資源清理

是否有任何標準機制/框架可用於此?我在Linux環境下運行。

感謝, 書齋

回答

2

一些資源會被自動清除。分配在堆棧或堆上的內存,套接字和文件描述符,信號量操作(如果使用SEM_UNDO)。

對於你隱約提到你的問題的情況下(使用IPC從另一個進程B訪問服務),你將需要:

  1. 檢測進程B的情況
  2. 被清理手。

解決#1的第一個主體方法是過程B可以輪詢過程A的PID的存在。這顯然不理想。更好的解決方案是使用IPC方法來檢測連接消失的另一端(例如TCP套接字)

如果您在進程A和B之間繪製了與網絡上兩臺計算機相比較的並行圖形,典型的解決方案是,流程B會在流程A的每個API調用之後清理掉,或者會腐蝕它的連接清單,並最終超時並清理流程A的資源,如果在給定數量的時間。