__fchattr() - ファイル記述子によるファイルまたはディレクトリーの属性の変更

標準

標準/拡張機能 C/C++ 依存項目

z/OS®UNIX

両方 z/OS V1R2

形式

#define _OPEN_SYS_FILE_EXT 1
#include <sys/stat.h>

int __fchattr(int filedes, attrib_t *attributes, int attributes_len);

機能説明

__fchattr() 関数は、ファイルに関連付けられた属性を変更します。これは、モード、所有者、アクセス時間、修正時間、変更時間、参照時間、監査フラグ、一般属性フラグ、ファイル・タグ、およびファイルのフォーマットとサイズを変更するために使用できます。影響を受けるファイルは、filedes 引数のファイル記述子によって定義されます。

attributes 引数は、変更する属性と希望する新しい値を示すために使用される attrib_t 構造体のアドレスです。attrib_t 型は、__fchattr() 関数での使用のために、<sys/stat.h> に定義されている f_attributes 構造体です。正しい動作のため、この構造体が、データの取り込みの前にゼロに初期化されていることを、ユーザーは確認する必要があります。f_attributes 構造体は、表 1 に示されているとおりに定義されます。

f_attributes 構造体は、__fchattr() 関数での使用のために、<sys/stat.h> に定義されています。

戻り値

正常に実行された場合、__fchattr() は 0 を戻します。

正常に実行されなかった場合、__fchattr() は -1 を戻して、errno を次のいずれかの 値に設定します。

エラー・コード
説明
EACCES
呼び出しプロセスは、適切な許可を持っていません。考えられる理由は次のとおりです。
  • 呼び出しプロセスはアクセス時刻または変更時刻に現在時刻をセットしようとしましたが、呼び出しプロセスの有効 UID がファイルの所有者に一致しないか、呼び出しプロセスがファイルの書き込み許可を持っていないか、または呼び出しプロセスに適切な特権がありません。
  • 呼び出しプロセスは、ファイルを切り捨てようとしましたが、ファイルの書き込み許可を持っていません。
EBADF
filedes パラメーターが、正しいファイル記述子ではありません。
ECICS
OTE CICS® 以外の環境でファイル・タグ属性を変更しようとしましたが、その環境ではファイル・タグはサポートされていません。
EFBIG
呼び出しプロセスはファイルのサイズを変更しようとしましたが、指定した長さがそのプロセスの最大ファイル・サイズの限度を超えています。
EINVAL
要求された変更内容を含む属性構造体は、無効です。
EPERM
この操作は、次のいずれかの理由で許可されていません。
  • 呼び出しプロセスはモードまたはファイル・フォーマットを変更しようとしましたが、呼び出しプロセスの有効 UID はファイルの所有者に一致せず、呼び出しプロセスには適切な特権がありません。
  • 呼び出しプロセスは、所有者を変更しようとしましたが、適切な特権がありません。
  • 呼び出しプロセスは、一般属性ビットを変更しようとしましたが、ファイルの書き込み許可を持っていません。
  • 呼び出しプロセスは、時刻値 (現在時刻ではない) をセットしようとしましたが、呼び出しプロセスの有効 UID はファイルの所有者に一致せず、呼び出しプロセスには適切な特権がありません。
  • 呼び出しプロセスは、変更時刻または参照時刻に現在時刻をセットしようとしましたが、ファイルの書き込み許可を持っていません。
  • 呼び出しプロセスは監査フラグを変更しようとしましたが、呼び出しプロセスの有効 UID はファイルの所有者に一致せず、呼び出しプロセスには適切な特権がありません。
  • 呼び出しプロセスはセキュリティー監査人の監査フラグを変更しようとしましたが、ユーザーには監査人権限がありません。
EROFS
pathname が読み取り専用ファイル・システム上の ファイルを指定しています。

関連情報