【问题标题】:Is closing file descriptor and removing inotify watch really necessary?关闭文件描述符并删除 inotify watch 真的有必要吗?
【发布时间】:2010-03-08 09:22:12
【问题描述】:

使用 python inotifyx,如果我需要它们直到程序退出,我是否必须删除监视并关闭打开的系统文件描述符?例如。如果我在每次运行时创建一个(文件描述符 + 监视)并且不关闭它,是否会出现一些问题?

【问题讨论】:

    标签: python linux inotify


    【解决方案1】:

    在使用完资源后释放资源(例如,空闲内存、关闭文件描述符、子进程上的 waitpid(2) 等)总是一个好主意。懒惰并在您退出时让操作系统为您处理,这肯定会导致将来出现错误。

    【讨论】:

    • 据我了解,这些“未来的错误”将意味着 Linux 内核或 Python 中的非常严重的错误。还是我错过了什么?
    • 嗯,他们可能是,但这不太可能。更有可能的是,您将以某种方式修改您的代码,从而导致资源泄漏。例如,将一段代码重构为一个函数并多次调用它——如果该新函数泄漏了文件描述符,那就是个问题。
    【解决方案2】:

    内核将监视存储为完整路径,因此最好关闭监视,它还可以消除 VFS 的不必要工作。至于文件描述符,这将取决于您打开了多少其他文件。

    有点像打电话,很高兴告诉对方您已停止收听,挂断电话是可选的,但很常规。如果您需要它来做某事,请保留它。

    【讨论】:

    • 但是linux不应该在进程退出时自动这样做吗?或者通过不删除 inotify 手表有明显的机会在操作系统中留下一些额外的痕迹?
    • @hell.orts.ru:是的,Linux 会在进程终止时执行此操作,从您的问题措辞来看,听起来您不再需要手表了但想保留文件描述符。在这种情况下,是的,取下手表并保留 FD。
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 2010-09-21
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多