我注意到“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()
函数。