Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all
名前
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) が返すデータ) を拡張するものである。 拡張属性のコンセプトは attr(5) に書かれて いる。 getxattr() は、ファイルシステム内の指定された path に対応する、名前 name の拡張属性の value (値) を取得する。 属性 value の長さが返される。 lgetxattr() は getxattr() と同じだが、シンボリックリンクの場合に、リンクが参照している ファイル ではなく、リンクそのものの情報を取得する点だけが異なる。 fgetxattr() は getxattr() と同じだが、 path の代わりに fd で参照されたオープン済みファイ ルの情報だけを取得する点が異なる (fd は open(2) によって返される)。 拡張属性の名前 name は普通のヌル終端された文字列である。 名前には、名前空間を表す接頭辞 (prefix) が含まれる; 個々の inode に対して、互いに独立な名前空間が複数あってもよい。 拡張 属性の値は、ある一定の長さの任意のテキストデータまたは バイナリデータの集合である。 size に 0 を指定して空のバッファーをこれらのシステムコールに渡すことができ、 この場合には 指定された名前の拡張属性の現在のサイズが返される。 この方法は、拡張属性の値を保持するのに 十分な大きさのバッファーサイズを 見積もるのに使うことができる、 このシステムコールインターフェースは、初期バッファーのサイズの推測をしたり、 与えられた バッファーが小さすぎたことを返り値で知らせることでバッファーを大きく したりできるように設 計されている。
返り値
成功した場合、拡張属性の値の長さを表す非負の数が返される。 失敗した場合、 -1 が返され、 errno に適切な値がセットされる。
エラー
ENOATTR 指定された名前の属性が存在しない、またはプロセスがその属性にアクセスする権限がない (ENOATTR は <attr/xattr.h> で ENODATA の同義語として定義されている)。 ENOTSUP 拡張属性がそのファイルシステムでサポートされていない、 もしくは無効になっている。 ERANGE value バッファーの大きさ size が結果を保持するのに十分な大きさでなかった。 上記に加えて、 stat(2) に書かれているエラーが発生する場合もある。
バージョン
これらのシステムコールはカーネル 2.4 以降の Linux で利用できる。 glibc でのサポートはバー ジョン 2.3 以降で行われている。
準拠
これらのシステムコールは Linux 独自である。
関連項目
getfattr(1), setfattr(1), listxattr(2), open(2), removexattr(2), setxattr(2), stat(2), attr(5), symlink(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。