gpt4 book ai didi

c - 如何知道/更改 fuse readdir 函数中的缓冲区大小?

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:47 27 4
gpt4 key购买 nike

我正在为 Linux 中的 FUSE 文件系统编写 readdir 函数。我的想法是在缓冲区中放置任意数量的目录条目,以在列出目录时将来自外部程序的 getdents 系统调用数量保持在较低水平(避免调用每个文件)。

该函数的缓冲区参数由 FUSE 提供,以及指向知道如何处理此缓冲区的 fuse_fill_dir_t 类型的 filler 辅助函数的指针。

问题是我不知道如何获取或更改此缓冲区的大小,filler 函数在缓冲区已满时返回 1

请注意,我使用偏移量调用 filler 函数,使用 0 不是一个选项,因为我不想返回所有只需一次 getdents 调用即可完成目录条目。

filler(buf, d->d_name, NULL, next_offset);

测试为缓冲区抛出一个 102 固定的最大条目数,但我不想依赖“神奇”的数字,而且我不知道这个数字从何而来。

最佳答案

根据 getdents() man page缓冲区由调用应用程序提供:

getdents()

   The system call getdents() reads several linux_dirent structures from
the directory referred to by the open file descriptor fd into the
buffer pointed to by dirp. The argument count specifies the size of
that buffer.

因此 getdents() 系统调用的数量将由进行调用的应用程序决定。

关于c - 如何知道/更改 fuse readdir 函数中的缓冲区大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32024674/

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