gpt4 book ai didi

c - 在 Linux 中使用什么函数来枚举目录的内容?

转载 作者:太空宇宙 更新时间:2023-11-04 11:29:05 25 4
gpt4 key购买 nike

阅读手册半小时后,我想分享一下我的发现,看到许多人在其他问题中只是指向 readdir,这不是线程安全的。

最佳答案

tl;dr 不要使用 readdirreaddir_r,它们不安全!使用 scandir

readdir不是线程安全的(事实上,它是 POSIX 中唯一已知具有此缺陷的目录相关函数)。当然,您可以在简单的程序中使用它,但要小心!

readdir_r 是线程安全的,但使用起来非常痛苦,尤其是因为您必须分配自己的 dirent 缓冲区,而且它不像您那样直接可能会想(因为不能保证文件名在所有情况下都适合所有 *nixes 和所有文件系统上的结构内提供的数组)。 There are workarounds ,但是当您使用它们时,“无论发生什么,都不要看”

到目前为止,我所知道的唯一完全安全且易于使用的函数是 scandir : 它是线程安全的并且它基本上为您做所有事情,为您留下一个干净的目录条目数组。虽然它可能不适合所有场合,但它绝对可以避免您不得不自己忍受的许多痛苦。

关于c - 在 Linux 中使用什么函数来枚举目录的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12450241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com