【问题标题】:Resource cleanup in LinuxLinux 中的资源清理
【发布时间】:2011-11-15 15:25:24
【问题描述】:

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

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

谢谢, 窝

【问题讨论】:

    标签: linux ipc process-management resource-cleanup


    【解决方案1】:

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

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

    1. 检测进程B中的情况
    2. 用手清理。

    解决#1 的首要方法是进程 B 可以轮询进程 A 的 PID 的存在。显然不理想。更好的解决方案是使用 IPC 方法来检测连接消失的另一端(例如 TCP 套接字)

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      相关资源
      最近更新 更多