Files

用於讀取或列出 BSD/macOS 文件標誌的 API/系統呼叫

  • March 22, 2021

我了解到,除了標準的 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,那麼請隨時將它移到那裡。)

stat可以在 macOS 和 BSD 上使用這些標誌來讀取;他們出現在st_flags現場。

引用自:https://unix.stackexchange.com/questions/640422