有没有办法发送参数到ftw()来处理path上的每个文件/目录? 由于multithreading问题,将有关论点作为一个全局variables是有点困难的,也就是说所有线程都可以看到全局variables的值,这是错误的。
正确设计的C回调接口有一个void*
参数,您可以使用它将周围代码中的任意数据传递到回调函数中。 [n]ftw
没有这样的说法,所以你有点儿小溪。
如果你的编译器支持线程局部变量( __thread
存储说明符),你可以使用它们来代替全局变量; 这会起作用,但并不比全局变得更加整洁。
如果你的C库有fts
系列的功能, fts
用这些。 它们在大多数现代Unix(包括Linux,OSX和最近的* BSD)上都可用,而gnulib有一个后备实现 。