4

阅读man 3 ftw我观察到“POSIX.1-2008 将 ftw() 标记为过时”。
现在我很担心并想成为一名“优秀的程序员”,并且可能尊重ftw(). 我现在仍然在努力找出我应该使用的其他东西现在是“最新的”,并且可以说是什么替代品ftw()使它过时了。

如果允许,我对两个子问题特别感兴趣。

  1. 我还能用ftw()吗?
  2. 有没有办法估计这样做所涉及的风险?
  3. 继任者是什么ftw()

如果我希望得到怜悯,并且愿意提出改进问题的建议,同时仍然很高兴得到帮助和接受,因为它具有挑战性,而且我很好地编写了这个问题。

4

1 回答 1

4

是的,您应该避免使用过时的功能。对于ftw(),替换为nftw()

int nftw(const char *path, int (*fn)(const char *,
       const struct stat *, int, struct FTW *), int fd_limit, int flags);

来自公开组

ftw()函数可以在其运行期间分配动态存储。Ifftw()被强制终止,例如被指向的函数或中断例程longjmp()或正在执行,没有机会释放该存储,因此它保持永久分配。处理中断的一种安全方法是存储发生中断的事实,并安排在下次调用时返回一个非零值指向的函数。siglongjmp()fnftw()fn

应用程序应该使用该nftw()函数而不是过时的ftw()函数。

于 2013-10-27T12:12:52.627 回答