#include <sys/types.h> #include <sys/xattr.h> ssize_t listxattr(const char *path, char *list, size_t size); ssize_t llistxattr(const char *path, char *list, size_t size); ssize_t flistxattr(int fd, char *list, size_t size);
listxattr() は、ファイルシステム内の指定された path に対応する拡張属性の名前リストを取得する。取得したリストは list に格納される。 list は呼び出し側で確保するバッファーで、引き数 size でバッファーのサイズを (バイト単位で) 指定する。リストは名前の集合で、ヌル終端された文字列が連続して並んでいる。呼び出したプロセスがアクセスする権限のない拡張属性の名前は、リストに含まれない。拡張属性の名前の list の長さが返される。
llistxattr() は listxattr() と同じだが、シンボリックリンクの場合に、リンクが参照しているファイル ではなく、リンクそのものの拡張属性の名前リストを取得する点だけが異なる。
flistxattr() は listxattr() と同じだが、 path の代わりに fd で参照されたオープン済みファイルの情報だけを取得する点が異なる (filedes は open(2) によって返される)。
個々の拡張属性の name は普通のヌル終端された文字列である。 名前には、名前空間を表す接頭辞 (prefix) が含まれる; 個々の inode に対して、互いに独立な名前空間が複数あってもよい。
size に 0 を指定して空のバッファーをこれらのシステムコールに渡すことができ、 この場合には拡張属性の名前リストの現在のサイズが返される。 この方法は名前リストを保持するのに十分な大きさのバッファーサイズを 見積もるのに使うことができる、
user.name1\0system.name1\0user.name2\0
拡張属性を使って POSIX ACL を実装している ext2、ext3、XFS のようなファイル システムでは、返される list は以下のようになることだろう:
system.posix_acl_access\0system.posix_acl_default\0
上記に加えて、 stat(2) に書かれているエラーが発生する場合もある。