如何在进程终止时清理进程(进程A)分配的所有资源?当进程A使用其他进程提供的服务时,进程A可以在另一个进程空间中分配资源(A将使用IPC访问另一个进程提供的服务)。
是否有可用的标准机制/框架?我在Linux环境下运行。
谢谢, 巢穴
答案 0 :(得分:2)
自动清理部分资源。堆栈上分配的内存或堆,套接字和文件描述符,信号量操作(如果使用SEM_UNDO)。
对于您在问题中模糊地提到的场景(使用IPC访问来自其他进程B的服务),您需要:
解决#1的第一个主要方法是进程B可以轮询进程A的PID的存在。这显然不太理想。更好的解决方案是使用IPC方法检测连接消失的另一面(例如TCP套接字)
如果您将进程A和B之间的并行与网络上的两台计算机进行比较,那么典型的解决方案是进程B将在进程A的每次API调用之后进行清理,或者会衰减其连接列表并最终超时并清理过程A的资源,如果在给定的时间后没有从过程A中听到过。