前へ | 次へ | 目次 | 索引 |
標準入力 ( stdin) から 1 行を読み込みます。
#include <stdio.h>関数バリアント gets関数には, _gets32および _gets64という名前のバリアントがあり,それぞれ 32 ビット・ポインタ・サイズおよび 64 ビット・ポインタ・サイズで使用されます。ポインタ・サイズ固有の関数の使い方の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.10 節を参照してください。char *gets (char *str);
str
stdinから読み込んだ情報を格納できるだけの十分な大きさの文字列を指すポインタ。
行末の改行文字 (\n) は,この関数で ASCII のヌル文字 (\0) に置換されます。stdinがレコード・モードでオープンされている場合は, getsはレコードの終端を改行文字と同じように取り扱うので,読み込みは改行文字まで,またはレコードの終端まで行われます。
x str 引数を指すポインタ。 NULL エラーが発生したか,または改行文字が検出される前にファイルの終端 (EOF) が検出されたことを示します。読み込みエラーが発生した場合, str の内容は未定義です。
セッション・リーダのプロセス・グループ ID を取得します。
#include <unistd.h>pid_t getsid (pid_t pid);
pid
セッション・リーダのプロセス・グループ ID を要求するプロセスのプロセス ID です。
getsid関数は, pid で指定されたプロセスのセッション・リーダであるプロセスのプロセス・グループ ID を取得します。 pid が (pid_t)0 の場合は,呼び出し元プロセスが指定されます。
x 指定されたプロセスのセッション・リーダのプロセス・グループ ID です。 (pid_t) - 1 エラーを示します。この関数は, errno に以下のいずれかの値を設定します。
- EPERM -- pid で指定されたプロセスが,呼び出し元プロセスと同じセッションに属していないため,この実装では,呼び出し元プロセスからこのプロセスのセッション・リーダのプロセス・グループ ID へのアクセスが許されていません。
- ESRCH -- プロセス ID が pid であるようなプロセスはありません。
端末画面から文字列を取得し,その文字列を str 変数に格納し,指定のウィンドウに表示します。 getstr関数は stdscrウィンドウに対して動作します。
#include <curses.h>int getstr (char *str);
int wgetstr (WINDOW *win, char *str);
win
ウィンドウを指すポインタ。str
ウィンドウから読み込んだ文字列を格納できる十分な大きさでなければなりません。
getstr関数と wgetstr関数は,文字列を読み込む前に指定されたウィンドウの表示を更新します。読み込んだ文字列から,末尾の改行文字は削除されます。詳細については, scrollok関数を参照してください。
OK 正常終了を示します。 ERR 関数が画面を不正にスクロールしたことを示します。
日付と時刻を取得します。
#include <time.h>int gettimeofday (struct timeval *tp, void *tzp);
tp
timeval構造体を指すポインタ。この構造体は <time.h>ヘッダ・ファイルに定義されています。tzp
NULL ポインタ。この引数が NULL ポインタでない場合は無視されます。
gettimeofday関数は, 1970 年 1 月 1 日 UTC (協定世界時) 00::00 からの経過時間として,現在の時刻 (秒数とマイクロ秒数) を取得します。現在の時刻は,tp 引数によって示される timeval構造体に格納されます。tzp 引数は,カネールによって設定されたタイム・ゾーン情報を格納する目的で使用されます。しかし,OpenVMS カーネルはタイム・ゾーン情報を設定しないので, tzp 引数は NULL でなければなりません。 NULL でない場合は無視されます。この関数は BSD プログラムとの互換性を維持するためにサポートされます。
SYS$TIMEZONE_DIFFERENTIAL 論理名の値が不正な場合は,この関数は異常終了し, errnoは EINVAL に設定されます。
0 正常終了を示します。 - 1 エラーが発生したことを示します。 errno はエラーを示すように設定されます。
POSIX ID が無効に設定されている場合,この関数は geteuidと同じであり,ユーザ識別コード (UIC) からメンバ番号 (OpenVMS の用語) を返します。POSIX ID が有効に設定されている場合は,実ユーザ ID を返します。
#include <unistd.h>uid_t getuid (void);
getuid関数は POSIX 形式の識別子または UIC ベースの識別子に対して使用できます。POSIX 形式の ID は, OpenVMS バージョン 7.3-2 およびそれ以降でサポートされています。
POSIX 形式の ID が無効に設定されている場合 (デフォルト), geteuid関数と getuid関数は同じであり,次に示すように現在の UIC からメンバ番号を返します。
- _VMS_V6_SOURCE 機能テスト・マクロを設定してコンパイルされたプログラムや, <unistd.h>ヘッダ・ファイルを取り込まないプログラムの場合, getuid関数と geteuid関数は OpenVMS UIC のメンバ番号を返します。たとえば,UIC が [313,31] の場合,メンバ番号 31 を返します。
- _VMS_V6_SOURCE 機能テスト・マクロを設定せずにコンパイルされたプログラムで, <unistd.h>ヘッダ・ファイルを取り込むプログラムの場合は,完全な UIC を返します。たとえば,UIC が [313, 31] の場合は,20512799 (31 + 313 * 65536) を返します。
POSIX 形式の ID が有効に設定されている場合, geteuidは呼び出しプロセスの実効ユーザ ID を返し, getuidは呼び出しプロセスの実ユーザ ID を返します。
POSIX 形式の ID を有効または無効にする方法については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 1.7 節を参照してください。
getegidおよび getgidも参照してください。
x 実ユーザ ID (POSIX ID が有効に設定されている場合),または現在の UIC から取り出したメンバ番号または完全な UIC (POSIX ID が無効に設定されている場合)。
指定されたファイルから文字を返します。
#include <stdio.h>int getw (FILE *file_ptr);
file_ptr
アクセスするファイルを指すポインタ。
getw関数は, intとして指定された入力ファイルから次の 4 文字を返します。
x int 内の次の 4 文字。 EOF 4 文字のいずれかを取得しているときにファイルの終端 (EOF) が検出され, 4 文字すべてが消失したことを示します。 EOF は受け付け可能な整数であるため,関数が正常終了したかどうか確認するには, feof と ferror を使用します。
指定されたファイルから次の文字を読み込み,ワイド文字コードに変換します。
#include <wchar.h>wint_t getwc (FILE *file_ptr);
file_ptr
アクセスするファイルを指すポインタ。
getwcはマクロとしてインプリメントされているため,副次効果のあるファイル・ポインタ引数 ( たとえば getwc (*f++)) は正しく評価されないことがあります。このような場合は,代わりに fgetwc関数を使用してください。 fgetwc関数を参照してください。
n 返された文字。 WEOF ファイルの終端 (EOF) またはエラーを示します。エラーが発生した場合,この関数は errno を設定します。この関数が設定する値の一覧については, fgetwc を参照してください。
1 文字のワイド文字を標準入力 ( stdin) から読み込みます。
#include <wchar.h>wint_t getwchar (void);
getwchar関数は fgetwc( stdin) と同じです。
x stdin から読み込み, wint_t に変換した次の文字。 WEOF ファイルの終端 (EOF) またはエラーを示します。エラーが発生した場合,この関数は errno を設定します。この関数が設定する値の一覧については, fgetwc を参照してください。
win 上での現在のカーソルの位置の (y,x) 座標を変数 y および x に格納します。
#include <curses.h>getyx (WINDOW *win, int y, int x);
win
ウィンドウを指すポインタ。y
有効な lvalue でなければなりません。x
有効な lvalue でなければなりません。
パターンに一致するパス名を生成します。
#include <glob.h>int glob (const char *pattern, int flags, int (*errfunc)(const char *epath, int eerrno), glob_t *pglob);
pattern
アクセス可能なパス名と比較するファイル名パターン。flags
glob関数でカスタマイズ可能な動作を制御します。errfunc
glob関数がエラー状態を検出した際に呼び出される関数 (オプション)。pglob
glob_t構造体へのポインタ。この構造体は,呼び出し元が割り当てます。この構造体の配列には, glob関数が pattern 引数と一致するファイル名を検索して格納します。最後のエントリは,NULL です。glob_t構造体型は, <glob.h>ヘッダ・ファイルで定義されており,少なくとも次のメンバを含んでいます。
size_t gl_pathc //Count of paths matched by pattern. char ** gl_pathv //Pointer to a list of matched pathnames. size_t gl_offs //Slots to reserve at the beginning of gl_pathv.
epath
ディレクトリがオープンできないか読み込めないために失敗したパス名。eerrno
epath 引数で指定されるパス名に関する失敗で, opendir関数, readdir関数,または stat関数が設定した errno値。
glob関数は,pattern 引数に一致する,アクセス可能なファイルのリストを作成します。
glob関数は, UNIX モードと OpenVMS モードの 2 つのモードで動作します。
DECC$GLOB_UNIX_STYLE 機能論理名を有効にすることで, UNIX モードを明示的に選択できます。このモードは,デフォルトでは無効になっています。
glob関数は,以下のいずれの状態でもなければ,デフォルトで OpenVMS モードを使用します。以下のいずれかの状態の場合, globは UNIX モードを使用します。
- DECC$GLOB_UNIX_STYLE が有効である。
- DECC$FILENAME_UNIX_ONLY 機能論理名が有効である。
- glob関数が,指定されたパス名指示パターン (ディレクトリ区切り文字など) をチェックし, UNIX 形式のパス名であると判定した。
OpenVMS モード
このモードを使用すると,OpenVMS のプログラマは, OpenVMS 形式のパターンを glob関数に渡し,期待した OpenVMS 形式の出力を得ることができます。 OpenVMS 形式のパターンは,DCL コマンドでユーザが受け取ったり, sys$parse システム・ルーチンおよび sys$search システム・ルーチンへの入力として使用するパターンです。
このモードでは,アスタリスク (*) やパーセント (%) などの,任意の OpenVMS ワイルドカードを使用できます。つまり, OpenVMS システム・コールがサポートしているワイルドカードすべてを使用できます。
OpenVMS モードは,UNIX のワイルドカード,? や [] のパターン・マッチングをサポートしていません。 OpenVMS ユーザは,[] を,ディレクトリ区切り文字として使用します。
他にも,OpenVMS モードと UNIX モードの動作には,相違点があります。
- OpenVMS モードでは,UNIX モードのような相対ファイル指定ではなく,完全なファイル指定が出力されます。
- OpenVMS モードでは,GLOB_MARK フラグは無視されます。これは,OpenVMS ではディレクトリにスラッシュ (/) を付加しても意味がないためです。
例:
Sample pattern input Sample output [.SUBDIR1]A.TXT DEV:[DIR.SUBDIR1]A.TXT;1 [.SUB*]%.* DEV:[DIR.SUBDIR1]A.TXT;1
UNIX モード
次のコマンドで,このモードを明示的に有効にできます。
$ DEFINE DECC$GLOB_UNIX_STYLE ENABLE
UNIX モードは, DECC$FILENAME_UNIX_ONLY 機能論理名が設定されている場合や,指定されたパターンが UNIX 形式のパス名であると glob関数が判断した場合にも,有効になります。
UNIX モードでは, glob関数は,以下の拡張ファイル・システム (EFS) 上の制限を満たす範囲で,可能なかぎり X/Open 仕様に従います。
- ファイル名に大文字と小文字が混在していても,表示上の意味しかありません。名前が "a" と "A" のファイルは,同じファイルです。ファイル名は,最初に作成されたときのとおりに大文字小文字を区別して表示されます。
- 次の文字を,ファイル名に含めることはできません。
? *
例:
Sample pattern input Sample output ./a/b/c ./a/b/c ./?/b/* ./a/b/c [a-c] c
共通の説明
glob関数は,アクセス可能なすべてのパス名をパターンと比較し,一致するすべてのパス名のリストを作成します。パス名にアクセスするためには, glob関数は,最後以外の各パス名コンポーネントに対する検索パーミッションと, pattern 引数の各ファイル名コンポーネントの各ディレクトリに対する読み込みパーミッションを必要とします。
glob関数は,一致したパス名の数と,パス名へのポインタのリストへのポインタを pglob 引数に格納します。パス名は,現在のロケールの LC_COLLATE カテゴリの設定に基づいてソートされます。最後のパス名の後の最初のポインタは,NULL です。どのパス名ともパターンが一致しない場合,一致したパス名の数として 0 が返されます。
pglob 引数が指す構造体は,呼び出し元が作成しなければなりません。 glob関数は,必要に応じて他の領域も割り当てます。 globfree関数は,以前の glob関数呼び出しの結果として pglob 引数に関連して割り当てられた領域を解放します。
flags 引数は, glob関数の動作を制御するために使用されます。 flags 値は,以下の定数の,ビット単位の論理和です。これらの定数は, <glob.h>ヘッダ・ファイルで定義されています。
GLOB_APPEND 以前に検索されたパス名に,この呼び出しで検索されたパス名を付加します。 GLOB_DOOFFS gl_offs メンバを使用して, pglob 引数の gl_pathv コンポーネントの始めに追加する NULL ポインタの数を指定します。 GLOB_ERR オープンや読み込みができないディレクトリを検出した場合に glob 関数が戻るようにします。 GLOB_ERR フラグが設定されていない場合, glob 関数は,オープンや読み込みができないディレクトリを検出しても,検索を続けます。 GLOB_MARK ディレクトリである各パス名にスラッシュ (/) を付加する必要があることを指定します。 OpenVMS モードでは,GLOB_MARK は無視されます。これは, OpenVMS システムではディレクトリにスラッシュを付加しても意味がないためです。 GLOB_NOCHECK pattern 引数がどのパス名とも一致しなかった場合, glob 関数は, pattern 引数だけからなるリストを返し,一致したパス名の数を 1 とします。 GLOB_NOESCAPE GLOB_NOESCAPE フラグを設定した場合,バックスラッシュ (\) は,メタキャラクタをエスケープするためには使用できません。
GLOB_APPEND フラグを使用すると, glob関数の以前の呼び出しで見つかったパス名に,新しいパス名のセットを追加できます。以下の規則は,同じ pglob 引数値で glob関数への呼び出しを複数回行い,その間に globfree関数を呼び出さない場合に適用されます。
- アプリケーションが glob関数の 1 回目の呼び出しで GLOB_DOOFFS フラグを設定した場合,このフラグは 2 回目の呼び出しでも設定され, pglob 引数の gl_offsフィールド値は,これらの呼び出しの間で変更されません。
- アプリケーションが glob関数の 1 回目の呼び出しで GLOB_DOOFFS フラグを設定しなかった場合,このフラグは 2 回目の呼び出しでも設定されません。
- 2 回目の呼び出しの後, pglob-> gl_pathvは,次の情報を含むリストを指します。
- GLOB_DOOFFS フラグと pglob-> gl_offsで指定された,ゼロ個以上の NULL。
- 呼び出し前に pglob-> gl_pathvリストにあった,パス名へのポインタ。ポインタの順序は, glob関数の 1 回目の呼び出し後と同じです。
- 2 回目の呼び出しで作成された新しいパス名へのポインタ (指定された順序)。
- pglob-> gl_offs引数で返されるカウントは,2 つの呼び出しで返されるパス名の合計数です。
- アプリケーションは,2 つの呼び出しの間で, pglob-> gl_pathcフィールドや pglob-> gl_pathvフィールドを変更してはなりません。
前へ 次へ 目次 索引