首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nftw传递带有未定义值的tflag

nftw传递带有未定义值的tflag
EN

Stack Overflow用户
提问于 2014-09-26 13:59:45
回答 1查看 479关注 0票数 0

在使用nftw遍历目录时,

代码语言:javascript
复制
nftw((argc < 2) ? "." : argv[1], rm, 20, FTW_DEPTH|FTW_PHYS)

nftw在遇到目录时将值5传递给rm函数的tflag参数。H标头只为t频参数指定4个值(0-3)的枚举,其中FTW_D或1是目录的适当值。在所有情况下,fpath值似乎都是正确的。

所以我的问题是这个。为什么它传递的是5而不是1,而5对于t频来说意味着什么呢?

编辑:

这个值实际上是FTW_DP (目录,所有子目录都已被访问过),它在下面的环境依赖部分中定义,我没有注意到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-26 14:07:32

nftw()的POSIX规范指出,rm函数的标志参数应为:

  • FTW_D对象是一个目录。
  • FTW_DNR对象是一个无法读取的目录。它的任何后代都不应被称为fn函数。
  • FTW_DP对象是一个目录,并且已经访问了子目录。(只有当FTW_DEPTH标志包含在标志中时,才会出现此情况。)
  • FTW_F对象是一个非目录文件.
  • 由于缺少适当的权限,FTW_NS在对象上的stat()函数失败了。传递给fn的stat缓冲区未定义。由于任何其他原因,stat()的失败被认为是错误,nftw()将返回-1。
  • FTW_SL对象是一个符号链接。(只有当FTW_PHYS标志包含在标志中时,才会出现此情况。)
  • FTW_SLN对象是一个没有命名现有文件的符号链接。(只有当FTW_PHYS标志不包含在标志中时,才会出现此情况。)

由于您没有标识您的系统,而且标准也没有定义与被调用函数的标志参数相关联的数字,所以没有人能够识别5在您的系统中的含义。然而,有足够的选项使5作为一个值似乎不可信。

在Mac (10.9.5)上,值5FTW_SL。在另一个系统上,基于OSF,jedwardscomment中指出5值是FTW_DP的值,因此完全有理由观察到5表示的标志是系统依赖的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26061399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档