名 前
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/ に 書 か れ て い る 。