我了解到除了标准 *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 或许还有旧版本的 macOSls -lO
- macOS 的当前版本
您可以使用以下命令更改标志chflags
:FreeBSD 手册页
有相应的系统调用chflags
, lchflags
,fchflags
来更改这些标志:macOS 手册页
但我似乎找不到系统调用读旗帜。肯定ls
会调用一些函数来获取它们吗?可以更改它们的系统调用似乎也无法返回它们当前的状态。
我缺少什么?
(如果它属于 StackOverflow,那么请随意将其移至那里。)
答案1
可以使用读取标志stat
在 macOS 和 BSD 上;它们出现在该st_flags
领域。