Linux中的资源清理

Linux中的资源清理,linux,ipc,process-management,resource-cleanup,Linux,Ipc,Process Management,Resource Cleanup,当进程(进程a)终止时,我如何清理它分配的所有资源?当进程A使用另一个进程提供的服务时,它可以在另一个进程空间中分配资源(A将使用IPC访问另一个进程提供的服务) 是否有任何标准机制/框架可用于此?我的进程在Linux环境下运行 谢谢, Den某些资源会自动清理。堆栈或堆上分配的内存、套接字和文件描述符、信号量操作(如果使用SEM_UNDO) 对于您在问题中模糊提及的场景(使用IPC从另一个进程B访问服务),您需要: 检测流程B中的情况 用手清理 解决#1的第一个方法是进程B可以轮询进程A的PI

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

是否有任何标准机制/框架可用于此?我的进程在Linux环境下运行

谢谢,
Den

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

对于您在问题中模糊提及的场景(使用IPC从另一个进程B访问服务),您需要:

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

    如果将进程A和进程B与网络上的两台计算机进行比较,典型的解决方案是,进程B将在进程A的每次API调用后进行清理,或者,如果在给定的时间段后没有收到进程A的消息,它会破坏它的连接列表并最终超时并清理进程A的资源