当我在命令行中键入ls -l
,有时一个@
或+
符号来了旁边的文件权限(顺便说一句,我是在OS X),如下图所示:如何获取文件的扩展属性(UNIX/C)?
[email protected] 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
还是想知道,如何将此转化为@
或+
?
你可以举一个如何获得@或+符号的例子吗?我阅读文档,并尝试链接,我得到:com.apple.metadata:kMDItemWhereFroms。任何想法是什么意思? –
'@'和'+'不是来自任何地方。如果它检测到文件具有扩展属性或ACL,则它们仅由'ls'显示。 – Barmar
要获取任何特定属性的含义,您必须搜索它。我不知道一个全面的列表。 – Barmar