スポンサーリンク

CHFLAGS(2) FreeBSD システムコールマニュアル CHFLAGS(2)

名称

chflags, lchflags, fchflags − ファイルフラグを設定する

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/stat.h>
#include <unistd.h>

int

chflags(const char *path, u_long flags);

int

lchflags(const char *path, int flags);

int

fchflags(int fd, u_long flags);

解説

名前が path によって指定されるファイル、または記述子 fd によって参照され るファイルのフラグが flags に変更されます。

lchflags() システムコールは chflags() と同じですが、指定されたファイルが シンボリックリンクだった場合の動作が異なります。この場合 lchflags() は、 リンクが指している先のファイルではなく、リンク自身のフラグを変更します。

指定されたフラグは次の値の論理和 (or) を取ることで作成されます。

             UF_NODUMP

そのファイルを dump の対象外とします。
UF_IMMUTABLE
そのファイルは変更禁止です。
UF_APPEND
そのファイルは末尾への追加だけが可能です。
UF_NOUNLINK
そのファイルは名前を変更したり削除できません。
UF_OPAQUE
ユニオンファイルシステムのスタックを通じて見るとき、 このディレクトリは不透明です。
SF_ARCHIVED
そのファイルはアーカイブ可能です。
SF_IMMUTABLE
そのファイルは変更禁止です。
SF_APPEND
そのファイルは末尾への追加だけが可能です。
SF_NOUNLINK
そのファイルは名前を変更したり削除できません。

‘‘UF_IMMUTABLE’’, ‘‘UF_APPEND’’, ‘‘UF_NOUNLINK’’, ‘‘UF_NODUMP’’, ‘‘UF_OPAQUE’’ フラグは、ファイルの所有者またはスーパユーザのどちらかに よって設定または設定解除できます。

‘‘SF_IMMUTABLE’’, ‘‘SF_APPEND’’, ‘‘SF_NOUNLINK’’, ‘‘SF_ARCHIVED’’ フラグ は、スーパユーザだけが設定または設定解除できます。スーパユーザのみが設定 できるフラグをスーパユーザでないものが設定しようとしても警告なしで無視さ れます。これらのフラグはいつでも設定できますが、通常は、システムがシング ルユーザモードにあるときにだけ設定解除するのが普通です (詳細については init(8) を参照してください)。

戻り値

成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。

エラー

chflags() システムコールの処理は以下の場合に失敗します:

       [ENOTDIR]

パスの構成要素中にディレクトリ以外のものが含まれていま す。

[ENAMETOOLONG]
パス名の構成要素が 255 文字を越えているか、またはパス 名全体が 1023 文字を越えています。

[ENOENT]
指定されたファイルが存在しません。

[EACCES]
指定されたパスには、検索が許可されていないディレクトリ が含まれています。

[ELOOP]
パス名を変換するときに検出されたシンボリックリンクが多 すぎます。

[EPERM]
実効ユーザ ID がファイルの所有者と一致せず、かつ、実効 ユーザ ID がスーパユーザでありません。

[EROFS]
指定されたファイルは読取り専用ファイルシステム上にあり ます。

[EFAULT]
path
引数が、プロセスに割り当てられたアドレス空間の範 囲外を指しています。

[EIO]
ファイルシステムに読み書きしている間に 入出力エラーが 発生しました。

[EOPNOTSUPP]
ファイルシステムがファイルフラグをサポートしません。

fchflags() システムコールの処理は以下の場合に失敗します:

[EBADF]
記述子が有効ではありません。

[EINVAL]
fd
引数がファイルではなくソケットを参照しています。

[EPERM]
実効ユーザ ID がファイルの所有者と一致せず、実効ユーザ ID がスーパユーザではありません。

[EROFS]
ファイルが読取り専用システム上に存在しています。

[EIO]
ファイルシステムに読み書きしている間に 入出力エラーが 発生しました。

[EOPNOTSUPP]
ファイルシステムがファイルフラグをサポートしません。

関連項目

chflags(1), fflagstostr(3), strtofflags(3), init(8), mount_unionfs(8)

歴史

chflags() システムコールと fchflags() システムコールは 4.4BSD ではじめて 登場しました。

FreeBSD 10.0 May 5, 2002 FreeBSD 10.0

スポンサーリンク