用于读取或列出 BSD/macOS 文件标志的 API/系统调用

用于读取或列出 BSD/macOS 文件标志的 API/系统调用

我了解到除了标准 *nix 文件之外权限, macOS也有文件旗帜,并且它们起源于 BSD Unix。 macOS 的此类标志集是:

UF_NODUMP      Do not dump the file.
UF_IMMUTABLE   The file may not be changed.
UF_APPEND      The file may only be appended to.
UF_OPAQUE      The directory is opaque when viewed through a union stack.
UF_HIDDEN      The file or directory is not intended to be dis-played displayed played to the user.
SF_ARCHIVED    The file has been archived.
SF_IMMUTABLE   The file may not be changed.
SF_APPEND      The file may only be appended to.

您可以通过 ls 的额外开关来查看这些额外的标志,尽管开关有所不同:

  • ls -lo- BSD 或许还有旧版本的 macOS
  • ls -lO- macOS 的当前版本

您可以使用以下命令更改标志chflagsFreeBSD 手册页

有相应的系统调用chflags, lchflags,fchflags来更改这些标志:macOS 手册页

但我似乎找不到系统调用旗帜。肯定ls会调用一些函数来获取它们吗?可以更改它们的系统调用似乎也无法返回它们当前的状态。

我缺少什么?

(如果它属于 StackOverflow,那么请随意将其移至那里。)

答案1

可以使用读取标志stat在 macOS 和 BSD 上;它们出现在该st_flags领域。

相关内容