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


前へ 次へ 目次 索引



fseeko

ファイルの位置をファイル内の指定されたバイト・オフセットに設定します。この関数は fseekと同じです。

形式

#include <stdio.h>

int fseeko (FILE *file_ptr, off_t offset, int direction);


引数

file_ptr

ファイル・ポインタ。

offset

バイト数で指定したオフセット。 off_tデータ型は 32 ビット整数または 64 ビット整数です。 64 ビット・インタフェースの場合, 2 GB 以上のファイル・サイズが認められます。このインタフェースは,次に示すように _LARGEFILE 機能テスト・マクロを定義することにより,コンパイル時に選択できます。


CC/DEFINE=_LARGEFILE 

direction

新しい位置を計算するために offset が加算される位置を示す整数。新しい位置は,direction が SEEK_SET の場合はファイルの先頭, direction が SEEK_CUR の場合はファイル位置指示子の現在の値, direction が SEEK_END の場合はファイルの終端 (EOF) になります。

説明

fseeko関数は fseek関数と同じですが, offset 引数のデータ型が long intではなく, off_t型である点が異なります。

fsetpos

指定されたファイルのファイル位置指示子を設定します。

形式

#include <stdio.h>

int fsetpos (FILE *stream, const fpos_t *pos);


引数

stream

ファイル・ポインタ。

pos

インプリメンテーションで定義されている構造体を指すポインタ。 fgetpos関数は,この後の fsetposの呼び出しで使用できる情報をこの構造体に格納します。

説明

fgetpos関数を使用する前に, fsetpos関数を呼び出します。

戻り値

0 正常終了を示します。
- 1 エラーを示します。


fstat

ファイル記述子によって指定されるファイルに関する情報にアクセスします。

形式

#include <stat.h>

int fstat (int file_desc, struct stat *buffer);

関数バリアント _DECC_V4_SOURCE および _VMS_V6_SOURCE 機能テスト・マクロを定義してコンパイルすると, fstat関数に対して, OpenVMS バージョン 7.0 より前の動作に相当するローカル時刻ベースのエントリ・ポイントが有効になります。

引数

file_desc

ファイル記述子。

buffer

stat_t型の構造体を指すポインタ。この構造体は <stat.h>ヘッダ・ファイルに定義されています。指定されたファイルに関する情報がこの引数に格納されます。 buffer によって示される構造体のメンバは次のとおりです。

メンバ 定義
st_dev dev_t 物理デバイス名を指すポインタ
st_ino[3] ino_t ファイル ID が格納される 3 ワード
st_mode mode_t ファイル "mode" (prot, dir,...)
st_nlink nlink_t UNIX システムとの互換性を維持するためにのみ提供される
st_uid uid_t オーナのユーザ ID
st_gid gid_t グループ・メンバ: st_uid から取得
st_rdev dev_t UNIX システムとの互換性 -- 常に 0
st_size off_t バイト数で表したファイル・サイズ
st_atime time_t ファイル・アクセス時刻,常に st_mtime と同じ
st_mtime time_t 最終変更時刻
st_ctime time_t ファイル作成時刻
st_fab_rfm char レコード・フォーマット
st_fab_rat char レコード属性
st_fab_fsz char 固定ヘッダ・サイズ
st_fab_mrs unsigned レコード・サイズ

dev_tino_toff_tmode_tnlink_tuid_tgid_ttime_t<stat.h>ヘッダ・ファイルに定義されています。しかし,互換性を維持するように設定してコンパイルした場合は (/DEFINE=_DECC_V4_SOURCE), dev_tino_toff_tだけが定義されます。

off_tデータ型は 32 ビット整数または 64 ビット整数です。 64 ビットインタフェースの場合, 2 GB 以上のファイル・サイズが認められます。このインタフェースは,次に示すように _LARGEFILE 機能テスト・マクロを定義することにより,コンパイル時に選択できます。


CC/DEFINE=_LARGEFILE 

OpenVMS バージョン 7.0 では,時刻は Epoch (1970 年 1 月 1 日 GMT 標準時 00:00:00) からの時間 (秒数) で与えられます。

st_mode構造体メンバは状態情報モードであり, <stat.h>ヘッダ・ファイルに定義されています。 st_modeビットは次のとおりです。

ビット 定数 定義
0170000 S_IFMT ファイルのタイプ
0040000 S_IFDIR ディレクトリ
0020000 S_IFCHR 文字スペシャル
0060000 S_IFBLK ブロック・スペシャル
0100000 S_IFREG 一般
0030000 S_IFMPC 多重化された文字スペシャル
0070000 S_IFMPB 多重化されたブロック・スペシャル
0004000 S_ISUID 実行時にユーザ ID を設定
0002000 S_ISGID 実行時にグループ ID を設定
0001000 S_ISVTX 使用後もスワップされたテキストを保存
0000400 S_IREAD 読み込みアクセス許可,オーナ
0000200 S_IWRITE 書き込みアクセス許可,オーナ
0000100 S_IEXEC 実行/検索アクセス許可,オーナ


説明

fstat関数はリモート・ネットワーク・ファイルに対しては機能しません。

注意 (Alpha only)

OpenVMS Alpha システムでは, statfstatutimeutimes関数は, POSIX 準拠のファイル・タイムスタンプに対する新しいファイル・システム・サポートを活用できるように拡張されています。

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

このように変更される前は, stat関数と fstat関数は st_ctime,st_mtime, st_atime フィールドの値を,次のファイル属性をもとに設定していました。

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

また,ファイル変更時刻に関しては, utimeutimesは ATR$C_REVDATE ファイル属性を変更し, file-access-time 引数を無視していました。

機能が変更された後,ODS-5 デバイスのファイルでは, stat関数と fstat関数は次の新しいファイル属性をもとに,st_ctime,st_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_atime を st_mtime に設定します。

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

互換性を維持するために,デバイスの種類にかかわらず, statfstatutimeutimesの以前の動作はデフォルトのまま残されています。

新しい動作は,アプリケーションを起動する前に,実行時に DECC$EFS_FILE_TIMESTAMPS 論理名を "ENABLE" に定義することにより明示的に有効にする必要があります。この論理名を設定しても,ODS-2 デバイスのファイルの場合, statfstatutimeutimesの動作には影響ありません。


戻り値

0 正常終了を示します。
- 1 保護違反以外のエラーを示します。
- 2 保護違反を示します。


fsync

すべてのデータをディスクに書き込みます。

形式

#include <unistd.h>

int fsync (int fd);


引数

fd

オープンされているファイルに対応するファイル記述子。

説明

fsync関数は fflush関数とほとんど同じ動作をします。 2 つの関数の主な違いは, fflushが RMS バッファに格納されているデータだけを書き込むのに対し, fsyncはすべてのデータをディスクに書き込む点です。また, fflushでは,すべてのバッファを一度に書き込むことができます。 fsyncでは,このような操作はできません。

戻り値

0 正常終了を示します。
- 1 エラーを示します。


ftell

指定されたストリーム・ファイルの現在のバイト・オフセットを返します。

形式

#include <stdio.h>

long int ftell (FILE *file_ptr);


引数

file_ptr

ファイル・ポインタ。

説明

ftell関数は,ファイルの先頭からのバイト・オフセットを返します。

可変長ファイル,VFC ファイル,キャリッジ制御属性を含むファイルの場合,ファイルがレコード・モードでオープンされているときは, ftellは現在のバイト・オフセットではなく,現在のレコードの先頭の位置を返します。

レコード・ファイルを使用する場合, ftell関数は, ungetcまたは ungetwcを使用して取得された文字を無視します。ストリーム・ファイルが使用されているときは,この動作は発生しません。

どのファイル・タイプでも正確なオフセットを判断するための移植可能な方法については, fgetpos関数を参照してください。


戻り値

n 現在のオフセット。
EOF エラーを示します。


ftello

指定されたストリーム・ファイルの現在のバイト・オフセットを返します。この関数は ftellと同じです。

形式

#include <stdio.h>

off_t ftello (FILE *file_ptr);


引数

file_ptr

ファイル・ポインタ。

説明

ftello関数は ftell関数と同じですが,戻り値が long int型ではなく, off_t型である点が異なります。

off_tデータ型は 64 ビット整数または 32 ビット整数です。 64 ビット・インタフェースでは, 2 GB 以上のファイル・サイズが認められます。このインタフェースは,次に示すように _LARGEFILE 機能テスト・マクロを定義することにより,コンパイル時に選択できます。


CC/DEFINE=_LARGEFILE 


ftime

timeptr によって示される構造体に, 1970 年 1 月 1 日 00:00:00 からの経過時間を返します。

形式

#include <timeb.h>

int ftime (struct timeb *timeptr);

関数バリアント _DECC_V4_SOURCE および _VMS_V6_SOURCE 機能テスト・マクロを定義してコンパイルすると, ftime関数に対して, OpenVMS バージョン 7.0 より前の動作に相当するローカル時刻ベースのエントリ・ポイントが有効になります。

引数

timeptr

構造体 timeb_tを指すポインタ。

説明

typedef timeb_tは, <timeb.h>ヘッダ・ファイルに定義されている次の構造体を参照します。


typedef struct timeb 
   { 
      time_t         time; 
      unsigned short millitm; 
      short          timezone; 
      short          dstflag; 
   }; 

メンバ timeは秒数で時刻を示します。

メンバ millitmは小数点以下の時間をミリ秒単位で示します。

ftimeを呼び出した後, timeb構造体の timezoneメンバと dstflagメンバには,それぞれグローバル変数 timezoneおよび dstflagの値が格納されます。 timezoneおよび dstflagグローバル変数については, tzset関数の説明を参照してください。


戻り値

0 正常終了。 timeb_t 構造体に情報が格納されます。
- 1 エラーを示します。システムの時差係数 ( つまりシステム時刻と UTC 時刻の差 ) が正しく設定されていないことを示すことがあります。

SYS$TIMEZONE_DIFFERENTIAL 論理名の値が不正な場合は,この関数は異常終了し, errno は EINVAL に設定されます。


ftruncate

ファイルを指定の長さに切り捨てます。

形式

#include <unistd.h>

int ftruncate (int filedes, off_t length);


引数

filedes

書き込みのためにオープンされているファイルの記述子。

length

ファイルの新しい長さ (バイト数)。 off_tデータ型は 32 ビット整数または 64 ビット整数です。 64 ビット・インタフェースでは, 2 GB 以上のファイル・サイズが認められます。このインタフェースは,次に示すように _LARGEFILE 機能テスト・マクロを定義することにより,コンパイル時に選択できます。


CC/DEFINE=_LARGEFILE 


説明

ftruncate関数は,ファイルを指定された位置で切り捨てます。レコード・ファイルの場合,位置はレコード境界でなければなりません。また,ファイルはローカルの一般ファイルでなければなりません。

切り捨てる前のファイルのサイズが length より大きい場合は,超過するデータは消失します。切り捨てる前のファイルのサイズが length より短い場合は,前の長さと新しい長さの間のバイトは 0 として読み込まれます。


戻り値

0 正常終了を示します。
- 1 エラーが発生しました。 errno はエラーを示すように設定されます。


前へ 次へ 目次 索引