当我ls -l
在命令行中输入时,有时会在文件权限旁边出现一个@
或+
符号(顺便说一句,我在 OS X 上),如下所示:
-rw-r-----@ 1 john staff 6731 Sep 28 01:10 mutations.txt
drwxr-xr-x+ 71 john staff 2414 Mar 25 18:16 ..
我知道如何使用该stat
结构获取权限位,但我认为这些扩展权限值不存在。有人可以指出我如何通过 C 或 POSIX API 获取这些值的正确方向吗?
编辑:
我尝试了以下操作:
#include <sys/types.h>
#include <sys/xattr.h>
#include <sys/types.h>
int main () {
char l[1024];
listxattr("/Users/john/desktop/mutations.txt", l, 1024, XATTR_SHOWCOMPRESSION);
printf("%s\n", l);
}
并得到输出:
com.apple.metadata:kMDItemWhereFroms
仍在尝试了解如何将其转换为@
or +
?