将参数发送到ftw()

时间:2011-11-07 18:01:10

标签: c linux filesystems

有没有办法向ftw()发送参数以用于处理路径上的每个文件/目录?由于多线程问题,将有关参数作为全局变量进行处理有点困难,即将全局值视为全局变量并且这将是错误的。

1 个答案:

答案 0 :(得分:5)

正确设计的C回调接口有一个void*参数,您可以使用该参数将周围代码中的任意数据传递给回调。 [n]ftw没有这样的论点,所以你有点像一条小溪。

如果您的编译器支持线程局部变量(__thread存储说明符),您可以使用它们而不是全局变量;这将工作,但实际上并不比全局更整洁。

如果您的C库具有fts系列函数,请改用它们。它们适用于大多数现代Unix(包括Linux,OSX和最近的* BSD)和gnulib has a fallback implementation