- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
像这样使用 nftw 遍历目录时,
nftw((argc < 2) ? "." : argv[1], rm, 20, FTW_DEPTH|FTW_PHYS)
nftw 在遇到目录时将值 5 传递给 rm 函数的 tflag 参数。 ftw.h header 仅为 tflag 参数指定一个具有 4 个值 (0-3) 的枚举,其中 FTW_D 或 1 是目录的适当值。 fpath 值似乎在所有情况下都是正确的。
所以我的问题是这样的。为什么它为 tflag 传递 5 而不是 1,5 对 tflag 意味着什么?
编辑:
该值实际上是 FTW_DP(目录,已访问所有子目录),它在下面的环境相关部分中定义,但我没有注意到。
最佳答案
nftw()
的 POSIX 规范表示 rm
函数的标志参数应为以下之一:
FTW_D
The object is a directory.FTW_DNR
The object is a directory that cannot be read. The fn function shall not be called for any of its descendants.FTW_DP
The object is a directory and subdirectories have been visited. (This condition shall only occur if the FTW_DEPTH flag is included in flags.)FTW_F
The object is a non-directory file.FTW_NS
The stat() function failed on the object because of lack of appropriate permission. The stat buffer passed to fn is undefined. Failure of stat() for any other reason is considered an error and nftw() shall return -1.FTW_SL
The object is a symbolic link. (This condition shall only occur if the FTW_PHYS flag is included in flags.)FTW_SLN
The object is a symbolic link that does not name an existing file. (This condition shall only occur if the FTW_PHYS flag is not included in flags.)
由于您没有识别您的系统,并且标准没有定义什么数字应该与被调用函数的标志参数相关联,所以没有人可以识别 5
在您的系统上意味着什么系统。但是,5
作为一个值似乎并不令人难以置信。
在 Mac OS X (10.9.5) 上,值 5
将是 FTW_SL
。在另一个基于 OSF 的系统上,jedwards comment 中的注释值 5
用于 FTW_DP
,因此完全证明了我的观察,即 5
表示的标志是系统相关的。
关于c - nftw 传递具有未定义值的 tflag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26061399/
我有这个代码: #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
我是一名优秀的程序员,十分优秀!