我注意到“posix.1-2008将ftw()标记为过时”。
现在我很担心,我想成为一个“优秀的程序员”,也许我会尊重man 3 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);

从AA>
ftw()函数可以在其运行期间分配动态存储。如果强制终止ftw(),例如由longjmp()所指的函数或中断例程执行的siglongjmp()fn,则ftw()没有机会释放该存储,因此它将保持永久分配。处理中断的一种安全方法是存储发生中断的事实,并安排让fn指向的函数在下次调用时返回一个非零值。
应用程序应该使用nftw()函数,而不是过时的ftw()函数。

08-03 22:42