阅读时man 3 ftw我发现“POSIX.1-2008 将 ftw() 标记为过时”。
现在我很担心,想成为一名“好的程序员”,也许尊重ftw(). 我现在仍然在努力找出我还应该使用什么现在是“最新的”,并且可以说是什么替代品ftw()使它过时了。
如果允许的话,我对两个子问题特别感兴趣。
ftw()?ftw()如果我愿意接受改进问题的建议,我希望得到怜悯,同时仍然很高兴得到帮助和接受,因为它具有挑战性,而且我很好地提出了这个问题。
是的,您应该避免使用过时的函数。对于ftw(),替换为nftw():
int nftw(const char *path, int (*fn)(const char *,
const struct stat *, int, struct FTW *), int fd_limit, int flags);
Run Code Online (Sandbox Code Playgroud)
来自公开组:
该
ftw()函数可以在其操作期间分配动态存储。如果ftw()被强制终止,例如由中断例程指向的函数longjmp()或正在执行,则没有机会释放该存储,因此它保持永久分配。处理中断的一种安全方法是存储已发生中断的事实,并安排在下次调用时返回非零值来指向该函数。siglongjmp()fnftw()fn应用程序应该使用该
nftw()函数而不是过时的ftw()函数。