当进程(进程A)终止时,我如何清理它所分配的所有资源?当进程A使用另一个进程提供的服务时,它可以在另一个进程空间中分配资源(A将使用IPC访问另一个进程提供的服务)。
是否有任何标准机制/框架可供使用?我在Linux环境下处理运行。
谢谢你,邓
发布于 2011-11-15 18:07:48
一些资源会自动清理。在堆栈或堆、套接字和文件描述符、信号量操作(如果使用SEM_UNDO)上分配的内存。
对于您在问题中含糊提到的场景(使用IPC从另一个进程B访问服务),您需要:
解决#1的第一个主要方法是进程B,可以轮询进程A的PID存在。显然不太理想。更好的解决方案是使用IPC方法检测连接消失的另一面(例如,TCP套接字)。
如果与网络上的两台计算机相比,进程A和进程B之间的并行,一个典型的解决方案是,进程B在进程A的每个API调用之后清理,或者破坏进程A的连接列表,如果进程A在给定的时间之后没有收到进程A的消息,它最终会超时和清理进程A的资源。
https://stackoverflow.com/questions/8138724
复制相似问题