nftw(FTW_CHDIR) 中的文件描述符泄漏?
我正在使用 POSIX 调用 nftw()
来遍历目录结构。目录结构是扁平的——只有 4 个文件,没有子目录。
然而,当我在这个平面目录上多次调用 nftw() 时,过了一会儿我收到一条错误消息:
"too many open file handles".
事实证明,当使用标志 FTW_CHDIR
时会发生这种情况。
您是否同意这是 Linux 实现 nftw() 中的一个错误?
更新
glibc 存储库中现已提供修复程序。
以下是我用于测试的源代码的一些链接:
- main.cpp: http://sourceware.org/bugzilla/attachment.cgi?id=4586&action=view
- Makefile:http://sourceware.org/bugzilla/attachment.cgi?id=4587&action=view
更新
- MacOS-X 是也受到该错误的影响
- Solaris9、Solaris10 和 AIX 5.3 没有有该错误
I am using the POSIX call nftw()
for traversing a directory structure. The directory structure is flat - only 4 files and no subdirectories.
However when I call nftw() a lot of times on this flat directory then I get an error message after a while:
"too many open file handles".
It turned out that this happens when the flag FTW_CHDIR
is used.
Would you agree that it is a bug in the Linux implementation of nftw() ?
UPDATE
A fix is now available in the glibc repositories.
here are some links to the source code I have used for testing:
- main.cpp: http://sourceware.org/bugzilla/attachment.cgi?id=4586&action=view
- Makefile: http://sourceware.org/bugzilla/attachment.cgi?id=4587&action=view
UPDATE
- MacOS-X is also hit by the bug
- Solaris9, Solaris10 and AIX 5.3 do not have the bug
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对我来说,Linux 上的
nftw
实现确实有问题。我已提交错误报告,请参阅此处
更新:现在 glibc 存储库中提供了修复程序。
For me it looks like there is really something wrong with the
nftw
implementation on linux.I have filed a bug report, see here
UPDATE: A fix is available in the glibc repositories now.
它在 Mac OS 10.6.2 上具有相同的行为。所以可能是规范的一部分,尽管我不知道具体是怎样的。
It has the same behaviour on Mac OS 10.6.2. So probably somehow part of the specification, though I don't see how exactly.
关于 Mac OS:以雷达 #7640283 的形式提交给 Apple 的错误报告。 (不幸的是,不可能有超链接。)
Regarding Mac OS: bugreport submitted to Apple as radar #7640283. (No hyperlink possible, unfortunately.)