setxattrのヘルプ・マニュアル
日本語 英語
setxattr --help
man setxattr
SETXATTR(2) Linux Programmer’s Manual SETXATTR(2)
名前
setxattr, lsetxattr, fsetxattr - 拡張属性の値を設定する
書式
#include
#include
int setxattr(const char *path, const char *name,
const void *value, size_t size, int flags);
int lsetxattr(const char *path, const char *name,
const void *value, size_t size, int flags);
int fsetxattr(int fd, const char *name,
const void *value, size_t size, int flags);
説明
拡張属性は、inode (ファイル、ディレクトリ、シンボリックリンク等) に関連
付けられた name:value の対である。これらは、システム上のすべての inode
に 関連付けられた通常の属性 (stat(2) が返すデータ) を拡張するものである
。拡張属性のコンセプトは attr(5) に書かれている。
setxattr() は、ファイルシステム内の指定された path に対応す る 、 名 前
name の拡張属性の値 value を設定する。 value の size は必ず指定しなけれ
ばならない。
lsetxattr() は setxattr() と同じだが、シンボリックリンクの場合に、リ ン
ク が参照しているファイルではなく、リンクそのものの拡張属性を設定する点
だけが異なる。
fsetxattr() は setxattr() と同じだが、 path の代わりに fd で参照され た
オ ープン済みファイルの情報だけを設定する点が異なる (filedes は open(2)
によって返される)。
拡張属性の名前は普通の NULL 終端された文字列である。 name には、名前 空
間を表す接頭辞 (prefix) が含まれる。個々の inode に対して、互いに独立な
名前空間が複数あってもよい。拡張属性の値 value は、ある一定の長さの任意
のテキスト・データまたはバイナリ・データの集合である。
操 作 の 意 味 を 明確にするために flags 引き数を使用することができる。
XATTR_CREATE は属性の作成だけを行うことを指定する。指定された名前の属性
がすでに存在する場合は失敗する。 XATTR_REPLACE は属性の置換だけを行うこ
とを指定する。指定された名前の属性がまだ存在しない場合は失敗する。デ フ
ォルトでは (フラグを指定しない場合)、拡張属性は必要な場合は作成され、属
性がすでに存在する場合は属性値の置換を行う。
返り値
成功した場合、 0 が返される。失敗した場合、 -1 が返され、 errno に適 切
な値がセットされる。
XATTR_CREATE が指定され、かつ属性がすでに存在する場合、 errno に EEXIST
がセットされる。 XATTR_REPLACE が指定され、属性がまだ存在しない場 合 、
errno に ENOATTR がセットされる。
拡 張 属 性 を 記 憶するのに十分なスペースが残っていない場合、 errno に
ENOSPC または EDQUOT (quota による制限が原因の場合) がセットされる。
拡張属性がそのファイルシステムでサポートされていない場合、もしくは無 効
になっている場合、 errno に ENOTSUP がセットされる。
stat(2) システムコールの説明に書かれているエラーはこれらのシステムコー
ルにも適用される。
バージョン
これらのシステムコールはカーネル 2.4 以降の Linux で利用できる。 glibc
でのサポートはバージョン 2.3 以降で行われている。
準拠
これらのシステムコールは Linux 独自である。
関連項目
getfattr(1), setfattr(1), getxattr(2), listxattr(2), open(2), removex-
attr(2), stat(2), attr(5), symlink(7)
Linux 2001-12-31 SETXATTR(2)