日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




ファイルのアクセスおよび変更時刻を設定します。

形式

#include <utime.h>

int utime (const char *path, const struct utimbuf *times);


引数



path

ファイルへのポインタ。

times

NULL ポインタ,または utimbuf構造体へのポインタ。

説明

utime関数は, path 引数で指定されたファイルのアクセスおよび変更時刻を設定します。この関数を使用する場合は,ファイルは書き込み可能モードでオープンできなければなりません。

times が NULL ポインタである場合には,ファイルのアクセスおよび変更時刻は現在の時刻に設定されます。 utimeをこの形で使用するためには,プロセスの実効ユーザ ID がファイルのオーナと一致する,またはプロセスがファイルへの書き込み許可を持っているか,適切な特権を持っている必要があります。

times が NULL ポインタでない場合には, utimbuf構造体へのポインタとして解釈され,アクセスおよび変更時刻は指定された構造体に含まれている値に設定されます。 utimeをこの形で使用できるのは,ファイルのユーザ ID に等しい実効ユーザ ID を持っているプロセスか,または適切な特権を持つプロセスに限られます。

utimbuf構造体は <utime.h>ヘッダ・ファイルによって定義されています。 utimbuf構造体の中の時刻は,Epoch 以降の経過秒数です。

実行に成功すると, utimeは最後のファイル状態の変更時刻 st_ctimeを更新します。 <stat.h>ヘッダ・ファイルを参照してください。

注意 (Integrity, Alpha)

OpenVMS Alpha システムおよび OpenVMS Integrity システムでは, statfstatutime,および utimes関数は,新しいファイル・システムの POSIX 準拠のファイル・タイムスタンプ・サポートに対応して拡張されています。

このサポートは,V7.3 およびそれ以降の OpenVMS Alpha システム上の ODS-5 デバイスでのみ使用できます。

この変更が行われる以前, statおよび fstat関数は,以下のファイル属性に基づいて st_ctimest_mtime,および st_atimeフィールドの値を設定していました。

st_ctime---ATR$C_CREDATE (ファイル作成時刻)
st_mtime---ATR$C_REVDATE (ファイル更新時刻)
st_atime---ファイル・アクセス時刻がサポートされていなかったため,常に st_mtimeに設定されていた

また,ファイル変更時刻については, utimeおよび utimesは ATR$C_REVDATE ファイル属性を変更し,ファイル・アクセス時刻引数は無視していました。

変更が行われて以降,ODS-5 デバイス上のファイルについては, statおよび fstat関数は,以下の新しいファイル属性に基づいて st_ctimest_mtime,および st_atimeフィールドの値を設定するようになりました。

st_ctime---ATR$C_ATTDATE (最終属性変更時刻)
st_mtime---ATR$C_MODDATE (最終データ変更時刻)
st_atime---ATR$C_ACCDATE (最終アクセス時刻)

ODS-2 デバイスのように ATR$C_ACCDATE が 0 である場合, statおよび fstat関数は st_atimest_mtimeに設定します。

ファイル変更時刻については, utimeおよび utimes関数は, ATR$C_REVDATE と ATR$C_MODDATE の両方のファイル属性を変更します。ファイル・アクセス時刻については,これらの関数は ATR$C_ACCDATE ファイル属性を変更します。 ODS-2 デバイス上で ATR$C_MODDATE および ATR$C_ACCDATE ファイル属性を設定しても効果はありません。

互換性を保つために,デバイスの種類にかかわらず, statfstatutime,および utimesの以前の動作はデフォルトのままとなっています。

新しい動作を有効にするためには,アプリケーションを呼び出す前に, DECC$EFS_FILE_TIMESTAMPS 論理名を明示的に "ENABLE" に定義する必要があります。この論理名を設定しても, ODS-2 デバイス上のファイルに対する statfstatutime,および utimesの動作には影響はありません。


戻り値

0 実行に成功しました。
-1    エラーを示します。関数は errno を以下のいずれかの値に設定します。

utime 関数は,以下の場合に 失敗します。

  • EACCES -- path 接頭辞のコンポーネントで検索許可が拒否された。または, times 引数が NULL ポインタで,プロセスの実効ユーザ ID がファイルのオーナと一致せず,書き込みアクセスが拒否された。

  • ELOOP -- path を解決する過程で検出したシンボリック・リンクの数が多すぎた。

  • ENAMETOOLONG -- path 引数の長さが PATH_MAX を超えた, pathname コンポーネントが NAME_MAX よりも長かった,またはシンボリック・リンクのパス名解決の過程で,長さが PATH_MAX を超える中間結果が生成された。

  • ENOENT -- path が既存のファイルを指定していない,または path が空の文字列である。

  • ENOTDIR -- path 接頭辞のコンポーネントがディレクトリでない。

  • EPERM -- times は NULL ポインタではなく,呼び出し元プロセスの実効ユーザ ID はファイルへの書き込みアクセスを持っているが,ファイルのオーナと一致せず,呼び出し元プロセスは適切な特権を持っていない。

  • EROFS -- ファイルを含んでいるファイル・システムは読み込み専用である。


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.