library home hp.com home products and services support and drivers solutions
cd-rom home
End of Jump to page title
HP OpenVMS Systems
Documentation

Jump to content


OpenVMS

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, I64)

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

このサポートは,OpenVMS Alpha バージョン 7.3 およびそれ以降の OpenVMS Alpha システムと I64 システムの 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 保護違反を示します。


fstatvfs (Alpha, I64)

指定されたファイルが格納されているデバイスに関する情報を取得します。

形式

#include <statvfs.h>

int fstatvfs (int filedes, struct statvfs *buffer);


引数

filedes

open関数または fcntl関数の呼び出しで取得したファイル記述子。

buffer

返される情報を保持する, statvfs構造体へのポインタ。

説明

fstatvfs関数は,指定されたファイルが格納されているデバイスに関する情報を返します。指定されたファイルに対する読み込み,書き込み,実行の許可は必要ありません。情報は, statvfs構造体の形で返されます。この構造体はヘッダ・ファイル <statvfs.h>で定義されており,以下のメンバが含まれています。
unsigned long f_bsize- 優先ブロックサイズ。

unsigned long f_frsize- 基本ブロックサイズ。

fsblkcnt_t f_blocks- ブロック数の合計。単位は f_frsize

fsblkcnt_t f_bfree- 空きブロックの合計数。 DFS ディスクに対する $GETDVI で,無意味な空きブロック数が誤ってレポートされる場合, f_bfreeには最大ブロック数が設定されます。

fsblkcnt_t f_bavail- 利用可能な空きブロックの数。呼び出し元のディスク・クォータの未使用分が設定されます。

fsfilcnt_t f_files- ファイル (inode) の合計数。

fsfilcnt_t f_ffree- 空きファイル (inode) 数。 OpenVMS システムでは,この値は「空きブロック数/クラスタサイズ」で計算されます。

fsfilcnt_t f_favail- 非特権空きファイル (inode) 数。 f_ffreeが設定されます。

unsigned long f_fsid- ファイル・システム ID。この ID は,割り当てクラス・デバイス名に基づきます。デバイスがローカルにマウントされている限り,デバイスに基づいた一意の値が提供されます。

unsigned long f_flag- 以下の 1 つ以上のフラグを表すビット・マスク。
ST_RONLY- ボリュームは読み込み専用。
ST_NOSUID- ボリュームで保護されたサブシステムが有効。


unsigned long f_namemax- ファイル名の最大長。
char f_basetype[64]- デバイス・タイプ名。
char f_fstr[64]- 論理ボリューム名。
char __reserved[64]- メディア・タイプ名。

正常に完了すると, fstatvfsは 0 (ゼロ) を返します。失敗すると - 1 を返し, errnoにエラーを示す値を設定します。

statvfsも参照してください。


戻り値

0 正常終了。
- 1 エラーを示します。 errno には,以下のいずれかが設定されます。

  • EBADF - ファイル記述子パラメータの値が不正です。

  • EIO - デバイスの読み込み中に入出力エラーが発生しました。

  • EINTR - 関数の実行中にシグナルを受信しました。

  • EOVERFLOW - 返却する値の 1 つが, buffer が示す構造体で正しく表現できません。


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 エラーを示します。


前へ 次へ 目次 索引