繁体   English   中英

什么“POSIX.1-2008标志ftw()过时”因此意味着什么?

[英]What would “POSIX.1-2008 marks ftw() as obsolete” consequently mean?

阅读man 3 ftw我发现“POSIX.1-2008标志着ftw()已经过时”。
现在我担心并想成为一个“好程序员”,并且可能尊重ftw()过时性。 我现在仍在努力寻找我应该使用的其他现在“最新”的东西,并且在谈到ftw()的替代品是什么让它过时了。

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

  1. 我还可以使用ftw()吗?
  2. 有没有办法估算这样做的风险
  3. 什么是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM