HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
指定されたファイルが格納されているデバイスに関する情報を取得します。
#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 が示す構造体で正しく表現できません。
すべてのデータをディスクに書き込みます。
#include <unistd.h>int fsync (int fd);
fd
オープンされているファイルに対応するファイル記述子。
fsync関数は fflush関数とほとんど同じ動作をします。 2 つの関数の主な違いは, fflushが RMS バッファに格納されているデータだけを書き込むのに対し, fsyncはすべてのデータをディスクに書き込む点です。また, fflushでは,すべてのバッファを一度に書き込むことができます。 fsyncでは,このような操作はできません。
0 正常終了を示します。 - 1 エラーを示します。
指定されたストリーム・ファイルの現在のバイト・オフセットを返します。
#include <stdio.h>long int ftell (FILE *file_ptr);
file_ptr
ファイル・ポインタ。
ftell関数は,ファイルの先頭からのバイト・オフセットを返します。可変長ファイル,VFC ファイル,キャリッジ制御属性を含むファイルの場合,ファイルがレコード・モードでオープンされているときは, ftellは現在のバイト・オフセットではなく,現在のレコードの先頭の位置を返します。
レコード・ファイルを使用する場合, ftell関数は, ungetcまたは ungetwcを使用して取得された文字を無視します。ストリーム・ファイルが使用されているときは,この動作は発生しません。
どのファイル・タイプでも正確なオフセットを判断するための移植可能な方法については, fgetpos関数を参照してください。
n 現在のオフセット。 EOF エラーを示します。
指定されたストリーム・ファイルの現在のバイト・オフセットを返します。この関数は 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
timeptr によって示される構造体に, 1970 年 1 月 1 日 00:00:00 からの経過時間を返します。
#include <timeb.h>関数バリアント _DECC_V4_SOURCE および _VMS_V6_SOURCE 機能テスト・マクロを定義してコンパイルすると, ftime関数に対して, OpenVMS Version 7.0 より前の動作に相当するローカル時刻ベースのエントリ・ポイントが有効になります。int ftime (struct timeb *timeptr);
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 に設定されます。
ファイルを指定の長さに切り捨てます。
#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 はエラーを示すように設定されます。
stdio (FILE*)オブジェクトの所有権を取得します。
#include <stdio.h>int ftrylockfile (FILE *file_ptr);
file_ptr
ファイル・ポインタ。
ftrylockfile関数はスレッドにより使用され, stdio (FILE*)オブジェクトが使用可能であれば,その所有権を取得します。 ftrylockfile関数は, flockfileのノン・ブロッキング版です。ftrylockfile関数は,成功するとゼロを返し,ロックを取得できないとゼロ以外を返します。
flockfileおよび funlockfileも参照してください。
0 成功を示します。 0 以外 ロックを取得できなかったことを示します。
ファイル・ツリーを検索します。
#include <ftw.h>int ftw (const char *path, int(*function)(const char *, const struct stat *, int), int depth);
path
検索するディレクトリ階層構造。function
ディレクトリ階層構造の各ファイルに対して起動する関数。depth
ftwで使用できるディレクトリ・ストリームまたはファイル記述子 ( またはその両方 ) の最大数。この引数は 1〜OPEN_MAX の範囲でなければなりません。
ftw関数は,path 引数によって指定されるディレクトリから順にディレクトリ階層構造を再帰的に検索します。階層構造内の各ファイルに対して, ftwは function 引数によって指定される関数を呼び出し,ファイルの名前を格納したヌル区切り文字列,ファイルに関する情報を格納した stat構造体を指すポインタ,および整数を渡します。
整数はファイル・タイプを示します。使用できる値は <ftw.h>に定義されており,次のとおりです。
FTW_F 一般ファイル FTW_D ディレクトリ FTW_DNR 読み込むことができないディレクトリ FTW_NS stat を正しく実行できないファイル
整数が FTW_DNR の場合は,そのディレクトリに格納されているファイルとサブディレクトリは処理されません。
整数が FTW_NS の場合は, stat構造体の内容は意味がありません。たとえば,読み込みアクセス許可が与えられ,実行 (検索) アクセス許可が与えられていないディレクトリ内のファイルの場合, function 引数は FTW_NS を渡します。
ftw関数はファイルまたはサブディレクトリを処理する前に,ディレクトリの処理を終了します。
ftw関数は次のいずれかが発生するまで,検索を続行します。
- path 引数によって指定されたディレクトリ階層構造が終了するまで。
- function 引数によって指定された関数の呼び出しが 0 以外の値を返すまで。
- ftw関数の内部でエラー (I/O エラーなど) が検出されるまで。
ftw関数は再帰的であるため,非常に深いファイル構造に適用すると,スタック・オーバフローが発生して,メモリ・フォルトで終了する可能性があります。
ftw関数では,操作時に動的記憶域を割り当てるために malloc関数が使用されます。 function 引数によって示される関数から longjmpを呼び出した場合など, ftwが強制終了された場合, ftwはその記憶域の割り当てを解除することができません。したがって,記憶域は割り当てられたままになります。
割り込みを安全に処理するには,割り込みが発生したという事実を格納し, function 引数によって指定される関数が次回呼び出されるときに 0 以外の値を返すようにします。
注意
- ftw関数はリエントラントです。 function 引数として指定される関数もリエントラントであることを確認してください。
- C RTL は, stat構造体の標準準拠の定義および関連する定義をサポートしています。これを使用するには,機能テスト・マクロ _USE_STD_STAT を使用してアプリケーションをコンパイルします。詳細は,お使いのシステムのヘッダ・ファイル <stat.h>を参照してください。
malloc, longjump,および statも参照してください。
0 正常終了を示します。 x function 引数によって指定される関数が検索を停止したことを示し,関数から返された値を返します。 - 1 エラーを示します。 errno は次のいずれかの値に設定されます。
- EACCES--- path 引数のコンポーネントに対して検索アクセス許可が拒否されたか,または path 引数に対して読み込みアクセス許可が拒否されました。
- ENAMETOOLONG---パス文字列の長さが PATH_MAX より長いか,または [_POSIX_NO_TRUNC] が有効なときに,パス名コンポーネントが NAME_MAX より長いことを示します。
- ENOENT--- path 引数が存在しないファイルの名前を指しているか,または空文字列を指しています。
- ENOMEM---この操作を実行するのに必要なメモリが不足しています。
また, function 引数によって示される関数でエラーが検出されると, errno が適切な値に設定されることがあります。
| 前へ | 次へ | 目次 | 索引 |