草庐IT

c - 向 ftw() 发送参数

有没有办法将参数发送到ftw()以用于处理路径上的每个文件/目录?由于多线程问题,将参数作为全局变量关注有点困难,即将值设置为全局变量将对所有线程可见,这是错误的。 最佳答案 正确设计的C回调接口(interface)有一个void*参数,您可以使用它来将周围代码中的任意数据传递到回调中。[n]ftw没有这样的论点,所以你有点上当了。如果您的编译器支持线程局部变量(__thread存储说明符),您可以使用它们代替全局变量;这将工作但实际上并不比全局更整洁。如果您的C库具有fts函数系列,请改用它们。它们在大多数现代Unix(包括Li

linux - nftw(FTW_CHDIR)中的文件描述符泄漏?

我正在使用POSIX调用nftw()来遍历目录结构。目录结构是扁平的——只有4个文件,没有子目录。然而,当我在这个平面目录上多次调用nftw()时,一段时间后我收到一条错误消息:"toomanyopenfilehandles".事实证明,当使用标志FTW_CHDIR时会发生这种情况。您是否同意这是nftw()的Linux实现中的错误?更新glibc存储库中现已提供修复程序。以下是我用于测试的源代码的一些链接:main.cpp:http://sourceware.org/bugzilla/attachment.cgi?id=4586&action=view生成文件:http://sour