有没有办法向ftw()发送参数以用于处理路径上的每个文件/目录?由于多线程问题,将有关参数作为全局变量进行处理有点困难,即将全局值视为全局变量并且这将是错误的。
答案 0 :(得分:5)
正确设计的C回调接口有一个void*
参数,您可以使用该参数将周围代码中的任意数据传递给回调。 [n]ftw
没有这样的论点,所以你有点像一条小溪。
如果您的编译器支持线程局部变量(__thread
存储说明符),您可以使用它们而不是全局变量;这将工作,但实际上并不比全局更整洁。
如果您的C库具有fts
系列函数,请改用它们。它们适用于大多数现代Unix(包括Linux,OSX和最近的* BSD)和gnulib has a fallback implementation。