GETXATTR - Linux手册页
Linux程序员手册 第2部分
更新日期: 2020-06-09
名称
getxattr,lgetxattr,fgetxattr-检索扩展的属性值
语法
#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);
说明
扩展属性是与inode关联的name:value对(文件,目录,符号链接等)。它们是与系统中所有inode关联的常规属性的扩展(即stat(2)数据)。扩展属性概念的完整概述可以在xattr(7)中找到。
getxattr()检索由名称标识并与文件系统中给定路径关联的扩展属性的值。属性值放置在值所指向的缓冲区中; size指定该缓冲区的大小。调用的返回值是放置在value中的字节数。
lgetxattr()与getxattr()相同,只是在符号链接的情况下,该链接本身被查询,而不是它所引用的文件。
fgetxattr()与getxattr()相同,只是仅查询fd引用的打开文件(由open(2)返回)代替路径。
扩展属性名称是一个以空字符结尾的字符串。该名称包括名称空间前缀;可能有几个与单个inode关联的不相交的名称空间。扩展属性的值是使用setxattr(2)分配的任意文本或二进制数据块。
如果将size指定为零,则这些调用将返回指定扩展属性的当前大小(并使值保持不变)。这可用于确定在后续调用中应提供的缓冲区的大小。 (但是,请记住,两次调用之间属性值可能会发生变化,因此仍然有必要检查第二次调用的返回状态。)
返回值
成功后,这些调用将返回非负值,该值是扩展属性值的大小(以字节为单位)。失败时,将返回-1并正确设置errno。
错误说明
- E2BIG
- 属性值的大小大于允许的最大大小;无法检索该属性。例如,在支持非常大的属性值的文件系统(例如NFSv4)上可能会发生这种情况。
- ENODATA
- named属性不存在,或者进程无法访问此属性。
- ENOTSUP
- 文件系统不支持或禁用扩展属性。
- ERANGE
- 值缓冲区的大小太小,无法保存结果。
此外,stat(2)中记录的错误也可能发生。
版本
从内核2.4开始,这些系统调用已在Linux上可用。从2.3版开始提供glibc支持。
遵循规范
这些系统调用是特定于Linux的。
示例
参见listxattr(2)。
另外参见
getfattr(1),setfattr(1),listxattr(2),open(2),removexattr(2),setxattr(2),stat(2),symlink(7),xattr(7)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。