HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
指定されたファイルが格納されているデバイスに関する情報を取得します。
#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"); } }
null で終了する文字列の中の,指定された文字の最初のオカレンスのアドレスを返します。
#include <string.h>関数バリアント strchr関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strchr32と _strchr64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strchr (const char *str, int character);
str
null で終了する文字列へのポインタ。character
int型のオブジェクト。
この関数は,null で終了する文字列の中を先頭から調べて,指定した文字が最初に見つかったアドレスを返します。終端の null 文字は,文字列の一部と見なされます。これとは対照的に, strrchrでは, null で終了する文字列の中を先頭から調べて,指定した文字が最後に見つかったアドレスを返します。
x 指定された文字の最初のオカレンスのアドレス。 NULL 文字列の中に文字が含まれていないことを示します。
#include <stdio.h> #include <string.h> main() { static char s1buf[] = "abcdefghijkl lkjihgfedcba"; int i; char *status; /* This program checks the strchr function by incrementally */ /* going through a string that ascends to the middle and then */ /* descends towards the end. */ for (i = 0; s1buf[i] != '\0' && s1buf[i] != ' '; i++) { status = strchr(s1buf, s1buf[i]); /* Check for pointer to leftmost character - test 1. */ if (status != &s1buf[i]) printf("error in strchr"); } }
2 つの ASCII 文字列を比較し,第 1 の文字列の個々の文字の ASCII 値が第 2 の文字列の値よりも小さいか,等しいか,大きいことを示す負の整数,0,または正の整数を返します。
#include <string.h>int strcmp (const char *str_1, const char *str_2);
str_1, str_2
文字列へのポインタ。
文字列の比較は,null 文字が検出されるか,文字列に違いが発見されるまで行われます。
< 0 str_1 が str_2 よりも小さいことを示します。 = 0 str_1 が str_2 と等しいことを示します。 > 0 str_1 が str_2 よりも大きいことを示します。
2 つの文字列を比較し,文字列が異なるかどうか,またどのように異なるかを示す整数を返します。この関数は,現在のロケールの LC_COLLATE カテゴリの照合情報を使用して,比較の実行方法を決定します。
#include <string.h>int strcoll (const char *s1, const char *s2);
s1, s2
文字列へのポインタ。
strcoll関数は, strcmpとは異なり, 2 つの文字列をロケールに依存した方法で比較します。エラー条件のための値は予約されていないので,アプリケーションは関数呼び出しの前に errnoを 0 に設定し,呼び出しの後にその値をテストすることでチェックを行う必要があります。strxfrmも参照してください。
< 0 s1 が s2 よりも小さいことを示します。 = 0 文字列が等しいことを示します。 > 0 s1 が s2 よりも大きいことを示します。
終端の null 文字も含む source のすべての内容を dest にコピーします。
#include <string.h>関数バリアント strcpy関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strcpy32と _strcpy64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strcpy (char *dest, const char *source);
dest
デスティネーション文字列へのポインタ。source
ソース文字列へのポインタ。
strcpy関数は, source を dest にコピーし, source の null 文字をコピーした後に停止します。dest がポイントする領域が source がポイントする領域とオーバラップしている場合,この関数の動作は未定義です。
x dest のアドレス。
指定された文字セットに含まれていない文字のみから構成される文字列の接頭辞の長さを返します。
#include <string.h>size_t strcspn (const char *str, const char *charset);
str
文字列へのポインタ。この文字列が null 文字列だった場合には,0 が返されます。charset
文字のセットを含んだ文字列へのポインタ。
strcspn関数は,文字列内の文字をスキャンし, charset に含まれる文字を検出した時点で停止し, charset に含まれない文字から構成される文字列の先頭のセグメントの長さを返します。str と charset がポイントする文字列のどの文字も一致しない場合, strcspnは文字列の長さを返します。
x セグメントの長さ。
指定された文字列を複製します。
#include <string.h>関数バリアント strdup関数は,それぞれ 32 ビットと 64 ビットのポインタ・サイズで使用するための _strdup32と _strdup64という名前のバリアントを持っています。ポインタ・サイズ固有の関数の使用方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *strdup (const char *s1);
s1
複製する文字列。
strdup関数は,s1 がポイントする文字列の正確な複製である文字列へのポインタを返します。新しい文字列のためのスペースの割り当てには malloc関数が使用されます。 strdup関数は,既存のシステムとの互換性のために用意されています。
x 結果として得られる文字列へのポインタ。 NULL エラーを示します。
error_code の中のエラー番号を,ロケール依存のエラー・メッセージ文字列にマップします。
#include <string.h>char *strerror (int error_code); (ANSI C)
char *strerror (int error_code[, int vms_error_code]); (HP C Extension)
error_code
エラー・コード。vms_error_code
OpenVMS エラー・コード。
strerror関数は, error_code の中のエラー番号を使用して,適切なロケール依存のエラー・メッセージを取得します。エラー・メッセージ文字列の内容は,プログラムの現在のロケールの LC_MESSAGES カテゴリによって決定されます。プログラムが標準関連の機能テスト・マクロ ( 『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.5.1 項を参照 ) を指定せずにコンパイルされた場合, strerrorは以下のように使用される第 2 の引数 (vms_error_code) を取ります。
- error_code が EVMSERR で,第 2 引数が存在する場合には,その第 2 引数が vaxc$errno値として使用される。
- error_code が EVMSERR で,第 2 引数が存在しない場合には, vaxc$errnoを参照して OpenVMS エラー条件を取得する。
「例」の項を参照してください。
第 2 の引数は, strerrorの ANSI C の定義には含まれていないので,移植性はありません。
エラーを示す戻り値は予約されていないため,アプリケーションは errnoの値を 0 に設定した後に strerrorを呼び出し, errnoの値をテストしなくてはなりません。ゼロ以外の値はエラー条件を示します。
x 該当するエラー・メッセージを含んでいるバッファへのポインタ。プログラム内でこのバッファを変更しないでください。また, strerror 関数の呼び出しにより,このバッファは新しいメッセージで上書きされることがあります。
#include <stdio.h> #include <errno.h> #include <string.h> #include <stdlib.h> #include <ssdef.h> main() { puts(strerror(EVMSERR)); errno = EVMSERR; vaxc$errno = SS$_LINKEXIT; puts(strerror(errno)); puts(strerror(EVMSERR, SS$_ABORT)); exit(1); }
この例のプログラムを実行すると,次の出力が生成されます。
nontranslatable vms error code: <none> network partner exited abort |
| 前へ | 次へ | 目次 | 索引 |