HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
off_tデータ型は 32 ビット整数または 64 ビット整数です。 64 ビット・インタフェースでは 2 GB 以上のファイル・サイズを扱うことができ,次のように,コンパイル時に _LARGEFILE 機能テスト・マクロを定義することで選択することができます。
CC/DEFINE=_LARGEFILE |
OpenVMS バージョン 7.0 の段階では,時刻は Epoch (00:00:00 GMT,1970 年 1 月 1 日) 後の経過秒数で指定されます。
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 | 実行/検索許可,オーナ |
stat関数は,リモート・ネットワーク・ファイルには使用できません。
ファイルがレコード・ファイルである場合, st_sizeフィールドにはキャリッジ・コントロール情報が含まれます。このため, st_size値は,ファイルから読み込める文字数には対応しません。
また, st_sizeが正しい値を報告するように, C RTL と RMS の両方のバッファをフラッシュする必要があります。
標準準拠の stat 構造体
OpenVMS Version 8.2 では,UNIX との互換性を向上させるため,機能テスト・マクロ _USE_STD_STAT と標準準拠の stat構造体が導入されました。
_USE_STD_STAT に ENABLE を定義すると,以下の動作となります。
blksize_t st_blksize; blkcnt_t st_blocks; |
X/Open 標準によれば,
st_blksizeは,指定したファイルに対するファイル・システム固有の優先入出力ブロック・サイズです。 OpenVMS システムでは,
st_blksizeにはデバイス・バッファ・サイズにディスク・クラスタ・サイズを掛けた値が設定されます。
st_blocksには,ファイルの割り当てサイズがブロック単位で設定されます。
st_blocksを計算するために使用するブロック・サイズは,必ずしも
st_blksizeと同じである必要はなく,ほとんどの場合違った値になります。
S_INO_NUM(ino),S_INO_SEQ(ino),S_INO_RVN(ino) は,それぞれ ino の FILES-11 ファイル番号,シーケンス番号,相対ボリューム番号を unsigned shortとして返します。
S_INO_RVN_RVN(ino) は,相対ボリューム番号を含む RVN フィールドのバイトを返します。
S_INO_RVN_NMX(ino) は,ファイル番号拡張を含む RVN フィールドのバイトを返します。
OpenVMS Alpha システムと I64 システムでは, stat, fstat, utime,および utimes関数は,新しいファイル・システムの POSIX 準拠のファイル・タイムスタンプ・サポートに対応して拡張されています。 このサポートは,バージョン 7.3 およびそれ以降の OpenVMS Alpha システム上の ODS-5 デバイスでのみ使用できます。 この変更が行われる以前, statおよび fstat関数は,以下のファイル属性に基づいて st_ctime, st_mtime,および st_atimeフィールドの値を設定していました。 st_ctime- ATR$C_CREDATE (ファイル作成時刻) また,ファイル変更時刻については, utimeおよび utimesは ATR$C_REVDATE ファイル属性を変更し,ファイル・アクセス時刻引数は無視していました。 変更が行われて以降,ODS-5 デバイス上のファイルに関しては, statおよび fstat関数は,以下の新しいファイル属性に基づいて st_ctime, st_mtime,および st_atimeフィールドの値を設定するようになりました。 st_ctime- ATR$C_ATTDATE (最終属性変更時刻) ODS-2 デバイスのように ATR$C_ACCDATE がゼロである場合, statおよび fstat関数は st_atimeを st_mtimeに設定します。 ファイル変更時刻については, utimeおよび utimes関数は, ATR$C_REVDATE と ATR$C_MODDATE の両方のファイル属性を変更します。ファイル・アクセス時刻については,これらの関数は ATR$C_ACCDATE ファイル属性を変更します。 ODS-2 デバイス上で ATR$C_MODDATE および ATR$C_ACCDATE ファイル属性を設定しても効果はありません。 互換性を保つために,デバイスの種類にかかわらず, stat, fstat, utime,および utimesの以前の動作がデフォルトとなっています。 新しい動作を有効にするためには,アプリケーションを呼び出す前に, DECC$EFS_FILE_TIMESTAMPS 論理名に明示的に ENABLE を定義する必要があります。この論理名を設定しても, ODS-2 デバイス上のファイルに対する stat, fstat, utime,および utimesの動作には影響はありません。 |
0 成功を示します。 - 1 特権違反以外のエラーを示します。 errno はエラーを示す値に設定されます。 - 2 特権違反を示します。
指定されたファイルが格納されているデバイスに関する情報を取得します。
#include <statvfs.h>int statvfs (const char *restrict path, struct statvfs *restrict buffer);
path
マウントされているデバイス上の任意のファイル。buffer
返される情報を保持する, statvfs構造体へのポインタ
statvfs関数は,指定されたファイルが格納されているデバイスに関する情報を返します。指定されたファイルに対する読み込み,書き込み,実行の許可は必要ありません。情報は, 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- 空きファイル・シリアル番号の合計。 OpenVMS システムでは,この値は「空きブロック数/クラスタサイズ」で計算されます。
fsfilcnt_t f_favail- 非特権プロセスが利用できるファイル・シリアル番号の数 (OpenVMS システムでは 0)。
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]- メディア・タイプ名。正常に完了すると, statvfsは 0 (ゼロ) を返します。失敗すると - 1 を返し, errnoにエラーを示す値を設定します。
fstatvfsも参照してください。
0 正常終了。 - 1 エラーを示します。 errno には,以下のいずれかが設定されます。
- EACCES - パス接頭辞のコンポーネントに対する検索許可が拒否されました。
- EIO - デバイスの読み込み中に入出力エラーが発生しました。
- EINTR - 関数の実行中にシグナルを受信しました。
- EOVERFLOW - 返却する値の 1 つが, buffer が示す構造体で正しく表現できません。
- ENAMETOOLONG - パス・パラメータのコンポーネントの長さが NAME_MAX を超えたか,パス・パラメータの長さが PATH_MAX を超えました。
- ENOENT - path のコンポーネントが,存在するファイルを示していないか, path が空文字列です。
- ENOTDIR - path パラメータのパス接頭辞のコンポーネントが,ディレクトリではありません。
2 つの 7 ビット ASCII 文字列の,大文字小文字を区別しない比較を行います。
#include <strings.h>int strcasecmp (const char *s1, const char *s2);
s1
比較する 2 つの文字列のうちの第 1 のものs2
比較する 2 つの文字列のうちの第 2 のもの
strcasecmp関数は大文字小文字を区別しません。返される字句的な違いは,小文字に変換されています。strcasecmp関数は 7 ビット ASCII の比較のみを行います。国際化されたアプリケーションでは,この関数は使用しないようにしてください。
n s1 文字列が s2 文字列よりも大きい,等しい,または小さい場合に,それぞれ 0 よりも大きい,等しい,または小さい整数値。
str_1 の末尾に,終端の null 文字を含めて str_2 を連結します。
#include <string.h>関数バリアント strcat関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strcat32と _strcat64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strcat (char *str_1, const char *str_2);
str_1, str_2
null で終了する文字列へのポインタ。
strncatを参照してください。
x 第 1 引数 str_1 のアドレス。これは連結された結果を保持できるだけの大きさを持つと仮定されます。
#include <string.h> #include <stdio.h> /* This program concatenates two strings using the strcat */ /* function, and then manually compares the result of strcat */ /* to the expected result. */ #define S1LENGTH 10 #define S2LENGTH 8 main() { static char s1buf[S1LENGTH + S2LENGTH] = "abcmnexyz"; static char s2buf[] = " orthis"; static char test1[] = "abcmnexyz orthis"; int i; char *status; /* Take static buffer s1buf, concatenate static buffer */ /* s2buf to it, and compare the answer in s1buf with the */ /* static answer in test1. */ status = strcat(s1buf, s2buf); for (i = 0; i <= S1LENGTH + S2LENGTH - 2; i++) { /* Check for correct returned string. */ if (test1[i] != s1buf[i]) printf("error in strcat"); } }
| 前へ | 次へ | 目次 | 索引 |