【问题标题】:File descriptor leak in nftw(FTW_CHDIR)?nftw(FTW_CHDIR)中的文件描述符泄漏?
【发布时间】:2011-01-15 11:18:45
【问题描述】:

我正在使用 POSIX 调用 nftw() 来遍历目录结构。目录结构是扁平的——只有 4 个文件,没有子目录。

但是,当我在这个平面目录上多次调用 nftw() 时,我会在一段时间后收到一条错误消息:

"too many open file handles".

事实证明,当使用标志 FTW_CHDIR 时会发生这种情况。

您是否同意这是 nftw() 的 Linux 实现中的一个错误?

更新

现在 glibc 存储库中提供了一个修复程序。

以下是我用于测试的源代码的一些链接:

更新

  • MacOS-X 受到该错误的影响
  • Solaris9、Solaris10 和 AIX 5.3 确实没有有错误

【问题讨论】:

    标签: linux gcc g++ posix glibc


    【解决方案1】:

    在我看来,nftw 在 linux 上的实现确实有问题。

    我已提交错误报告,请参阅here

    更新:glibc 存储库中现已提供修复程序。

    【讨论】:

    【解决方案2】:

    它在 Mac OS 10.6.2 上具有相同的行为。所以可能以某种方式成为规范的一部分,虽然我不知道具体是什么。

    【讨论】:

    • 这很有趣。我们真实世界的代码是多平台的——包括 MacOS。我明天会检查它是否也发生在我们的 MacOS 应用程序中。
    【解决方案3】:

    关于 Mac OS:作为雷达 #7640283 提交给 Apple 的错误报告。 (很遗憾,没有超链接。)

    【讨论】:

    • 鉴于 Apple 的 BSD 位与 FreeBSD 的大部分相同,我想知道这是否是从那里继承的错误。
    猜你喜欢
    • 2015-09-23
    • 1970-01-01
    • 2014-09-20
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多