gpt4 book ai didi

c - getdents64 一次完成的缓冲区大小

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:13 25 4
gpt4 key购买 nike

在Linux上,是否可以获取getdents64所需的缓冲区大小,从而一次性获取所有条目(假设获取大小后不对目录进行任何修改)?

我尝试了 fstat(dirfd,&stb) 的值; stb.st_size 但它看起来太大了? stat::st_size 为目录保留的值是多少?

最佳答案

据我所知,不,没有办法做到这一点,尤其是不能以适用于任意文件系统的方式。目录的表示由底层文件系统定义,st_size 似乎也是如此。当然,没有办法为 FUSE 或 9p 或其他远程/虚拟文件系统获得正确的值。

你为什么要这样做?我认为这没有用。一旦每次调用超过几 kB,系统调用的开销将由实际完成的工作决定。如果您真的很在意,可以使用一个函数包装 getdents64 系统调用,该函数会不断调整缓冲区大小并调用它直到到达 EOF。或者您可以只使用可移植的 opendir/readdir 接口(interface)为您执行适当的缓冲。

关于c - getdents64 一次完成的缓冲区大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54047840/

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