Linux中的资源清理

时间:2011-11-15 15:25:25

标签: linux ipc process-management resource-cleanup

如何在进程终止时清理进程(进程A)分配的所有资源?当进程A使用其他进程提供的服务时,进程A可以在另一个进程空间中分配资源(A将使用IPC访问另一个进程提供的服务)。

是否有可用的标准机制/框架?我在Linux环境下运行。

谢谢, 巢穴

1 个答案:

答案 0 :(得分:2)

自动清理部分资源。堆栈上分配的内存或堆,套接字和文件描述符,信号量操作(如果使用SEM_UNDO)。

对于您在问题中模糊地提到的场景(使用IPC访问来自其他进程B的服务),您需要:

  1. 检测流程B中的情况
  2. 手工清理。
  3. 解决#1的第一个主要方法是进程B可以轮询进程A的PID的存在。这显然不太理想。更好的解决方案是使用IPC方法检测连接消失的另一面(例如TCP套接字)

    如果您将进程A和B之间的并行与网络上的两台计算机进行比较,那么典型的解决方案是进程B将在进程A的每次API调用之后进行清理,或者会衰减其连接列表并最终超时并清理过程A的资源,如果在给定的时间后没有从过程A中听到过。

相关问题