- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 C 的 nftw() 函数递归迭代一个文件夹,以打印完整的目录结构,同时我找不到检查级别是否已更改的方法,即它已移入目录或仅在目录中迭代。那么,有什么方法可以使用 nftw() 检查级别的变化吗?
最佳答案
如果您阅读 nftw()
的 POSIX 规范,你会发现:
At each file it encounters,
nftw()
shall call the user-supplied functionfn
with four arguments:
The first argument is the pathname of the object.
The second argument is a pointer to the stat buffer containing information on the object…
The third argument is an integer giving additional information. Its value is one of the following:
FTW_D
— The object is a directory.- …
The fourth argument is a pointer to an
FTW
structure. The value ofbase
is the offset of the object's filename in the pathname passed as the first argument tofn
. The value oflevel
indicates depth relative to the root of the walk, where the root level is 0.
因此,您的问题的答案是 FTW 对象的 level
元素告诉您当前项目的级别。如果您需要发现更改,则需要以某种方式跟踪上一级别 — 它可能是文件范围变量。
如果有一个 nftw()
的变体(称之为 nftw2()
)来提供用户提供的“额外信息”参数,那就太好了— 将传递给 nftw2()
并且 nftw2()
将中继到被调用函数的 void *
。那么你就不需要文件范围变量了。
BSD、macOS 和 Linux 系统至少有 nftw()
的替代方案 — fts(3)
功能(也在 FreeBSD )。 macOS 手册说它们可能是 POSIX future 版本的一部分,但它们不是 POSIX 2017 的一部分。(我在这里也没有看到额外的信息参数——哦好吧!如果你曾经设计过一个回调系统,考虑提供一个可以使用的上下文(或“额外信息”)参数。)
关于使用 nftw() 遍历文件夹时检查级别变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52131755/
我有这个代码: #include #include #include int nftw_stat(const char *path, const struct stat *stat, int f
nftw() 是否有线程安全的实现?在 C/C++ 中?在文档中它说 "The nftw() function need not be thread-safe." 我将使用 nftw 作为递归删除函数
nftw 需要一个参数来表示要使用的文件句柄的数量。我见过几个将其指定为 20 的示例(这是 POSIX 保证的最小值?但也可以使用 getrlimit 或 sysconf 来获取实际的可用数量)。是
我正在尝试使用 C 的 nftw() 函数递归迭代一个文件夹,以打印完整的目录结构,同时我找不到检查级别是否已更改的方法,即它已移入目录或仅在目录中迭代。那么,有什么方法可以使用 nftw() 检查级
像这样使用 nftw 遍历目录时, nftw((argc < 2) ? "." : argv[1], rm, 20, FTW_DEPTH|FTW_PHYS) nftw 在遇到目录时将值 5 传递给 r
在 C 中,有没有办法指定 nftw 将搜索的基本目录的最大深度?例如,假设我要搜索的目录 dir 有一个 sub-subdirectory,但我只希望 nftw 通过 subdir 搜索而不是 su
我想用nftw在C中遍历一个目录结构。 但是,考虑到我想做的事情,我看不到使用全局变量的方法。 使用 (n)ftw 的教科书示例都涉及执行诸如打印文件名之类的操作。相反,我想获取路径名和文件校验和并将
我正在使用 POSIX 调用 nftw() 来遍历目录结构。目录结构是扁平的——只有 4 个文件,没有子目录。 然而,当我在这个平面目录上多次调用 nftw() 时,一段时间后我收到一条错误消息: "
我正在尝试使用 nftw处理目录下的一些文件 #include #include int wrapper(const char * fpath, const struct stat *sb, i
我写了一小段代码,使用 nftw 系统调用来进行树行走。 int flags =0; flags = flags | FTW_MOUNT; int nopenfd = 10; if( nftw( ar
我正在尝试使用带有以下代码的 nftw 获取目录树中的所有 .c 文件: static int gf(const char *path, const struct stat *st, int t, s
我从 opengroup.org 读了两个手册页( ftw 、 nftw ),所以我认为 ftw() 和 nftw() 不能保证线程-安全。 但我找到了另一个 page关于这些函数,请参阅 man7.
这是我的代码。我假设这与指针使用不当有关,或者我没有正确映射和取消映射我的内存。 谁能给我一些关于这个问题的见解? #define _XOPEN_SOURCE 500 #include #inclu
我是一名优秀的程序员,十分优秀!