2011-11-15 37 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的资源,如果在给定数量的时间。