kazmax - Linux で自宅サーバー

setxattr - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠
  6. 著者
  7. 関連項目

名前

setxattr, lsetxattr, fsetxattr - 拡張属性の値を設定する

書式

#include <sys/types.h>#include <attr/xattr.h>
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 filedes, const char*name,
              const void*value, size_t size, int flags);

説明

拡張属性は、inode (ファイル、ディレクトリ、シンボリックリンク等) に 関連付けられた name : value の対である。 これらは、システム上のすべての inode に関連付けられた通常の属性 ( stat (2)が返すデータ) を拡張するものである。 拡張属性のコンセプトは attr (5)に書かれている。

setxattr ()は、ファイルシステム内の指定された path に対応する、名前 name の拡張属性の値 value を設定する。 valuesize は必ず指定しなければならない。

lsetxattr ()は setxattr ()と同じだが、シンボリックリンクの場合に、リンクが参照しているファイル ではなく、リンクそのものの拡張属性を設定する点だけが異なる。

fsetxattr ()は setxattr ()と同じだが、 path の代わりに filedes で指示されたオープン済みファイルの情報だけを設定する点が異なる ( 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) システムコールの説明に書かれているエラーは これらのシステムコールにも適用される。

準拠

これらのシステムコールは Linux 独自である。

著者

Andreas Gruenbacher, < a.gruenbacher@computer.org >と SGI XFS 開発チーム, < linux-xfs@oss.sgi.com >。バグレポートやコメントは上記のアドレスまで送って下さい。

関連項目

getfattr (1), setfattr (1),  getxattr (2),   listxattr (2),   open (2),   removexattr (2),   stat (2),  attr (5)