This answer建议使用fts
作为遍历可重入文件系统的好方法。但是,在阅读manpages时,我注意到fts_read
和fts_children
被标记为MT-Unsafe
。
我在任何地方都找不到有关为什么将其标记为这样的信息。我发现了this thread,所以我怀疑原因是因为调用了chdir
(两个线程将尝试同时chdir
进行该进程,但这不是很好)。 / p>
如果是这样,我想传递FTS_NOCHDIR
就足以保证线程安全。还有其他我看不到的原因吗?
(记录下来,我很惊讶我们来到这一天时没有一个很好的可重入,合理使用扫描文件系统树的方式!严重吗?)