[英]What would “POSIX.1-2008 marks ftw() as obsolete” consequently mean?
阅读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);
来自Open Group :
ftw()
函数可以在其操作期间分配动态存储。 如果强行终止ftw()
,例如由fn
指向的函数或中断例程执行的longjmp()
或siglongjmp()
,ftw()
没有机会释放该存储,因此它仍然是永久分配的。 处理中断的一种安全方法是存储发生中断的事实,并安排让fn
指向的函数在下次调用时返回非零值。应用程序应使用
nftw()
函数而不是过时的ftw()
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.