示例

参见listxattr(2)。

版本

从内核2.4开始,这些系统调用已在Linux上可用。从2.3版开始提供glibc支持。

说明

扩展属性是与inode关联的name:value对(文件,目录,符号链接等)。它们是与系统中所有inode关联的常规属性的扩展(即stat(2)数据)。扩展属性概念的完整概述可以在xattr(7)中找到。

getxattr()检索由名称标识并与文件系统中给定路径关联的扩展属性的值。属性值放置在值所指向的缓冲区中; size指定该缓冲区的大小。调用的返回值是放置在value中的字节数。

lgetxattr()与getxattr()相同,只是在符号链接的情况下,该链接本身被查询,而不是它所引用的文件。

fgetxattr()与getxattr()相同,只是仅查询fd引用的打开文件(由open(2)返回)代替路径。

扩展属性名称是一个以空字符结尾的字符串。该名称包括名称空间前缀;可能有几个与单个inode关联的不相交的名称空间。扩展属性的值是使用setxattr(2)分配的任意文本或二进制数据块。

如果将size指定为零,则这些调用将返回指定扩展属性的当前大小(并使值保持不变)。这可用于确定在后续调用中应提供的缓冲区的大小。 (但是,请记住,两次调用之间属性值可能会发生变化,因此仍然有必要检查第二次调用的返回状态。)

错误说明

E2BIG
属性值的大小大于允许的最大大小;无法检索该属性。例如,在支持非常大的属性值的文件系统(例如NFSv4)上可能会发生这种情况。
ENODATA
named属性不存在,或者进程无法访问此属性。
ENOTSUP
文件系统不支持或禁用扩展属性。
ERANGE
值缓冲区的大小太小,无法保存结果。

此外,stat(2)中记录的错误也可能发生。

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/

遵循规范

这些系统调用是特定于Linux的。

名称

getxattr,lgetxattr,fgetxattr-检索扩展的属性值

另外参见

getfattr(1),setfattr(1),listxattr(2),open(2),removexattr(2),setxattr(2),stat(2),symlink(7),xattr(7)

语法

#include <sys/types.h>
#include <sys/xattr.h>

ssize_t getxattr(const char *path, const char *name,
                 void *value, size_t size);
ssize_t lgetxattr(const char *path, const char *name,
                 void *value, size_t size);
ssize_t fgetxattr(int fd, const char *name,
                 void *value, size_t size);
GETXATTR - Linux手册页

Linux程序员手册 第2部分
更新日期: 2020-06-09

返回值

成功后,这些调用将返回非负值,该值是扩展属性值的大小(以字节为单位)。失败时,将返回-1并正确设置errno。

日期:2019-08-20 17:58:56 来源:oir作者:oir