前へ | 次へ | 目次 | 索引 |
独立した子プロセスを作成します。この関数は非リエントラントです。
#include <unistd.h>int vfork (void); (_DECC_V4_SOURCE)
pid_t vfork (void); (not _DECC_V4_SOURCE)
HP C for OpenVMS システムの用意している vfork関数は,他の C インプリメンテーションの fork関数とは異なります。 表 REF-12 に,両者の間の主な違い 2 つを示します。
表 REF-12 vfork 関数と fork 関数 vfork 関数 fork 関数 exec 関数とともに使用される。 非同期処理で, exec 関数なしで使用できる。 親プロセスの一部の特性を共用する独立した子プロセスを作成する。 vfork が呼び出されたポイントで分岐する,親プロセスの正確な複製を作成する。親と子は,異なる実行段階にある同じプロセスであるかのように振る舞う。
vfork関数は,それ以降の exec関数の呼び出しのために必要なセットアップを行います。 vforkはプロセスは作成しませんが,以下のステップを実行します。
- 後に exec関数の呼び出しのリターン・アドレスとして使用されるリターン・アドレス ( vfork呼び出しのアドレス ) を保存する。
- 現在のコンテキストを保存する。
- 初めて呼び出されたとき ( exec関数の呼び出しの前) には整数 0 を返す。対応する exec関数呼び出しが行われた後は, exec関数は vfork呼び出しのポイントで親プロセスに制御を返し,戻り値として子プロセスのプロセス ID を返す。 exec関数が実行に失敗しない限り,呼び出しが vfork関数に対して 1 回, exec関数に対して 1 回行われたにもかかわらず,制御は vforkから 2 回返ったように見える。
vfork関数の動作は, setjmp関数の動作に似ています。 vforkと setjmpは,どちらも後に使用されるリターン・アドレスを設定し,このアドレスをセットアップするために初めて呼び出されたときには整数 0 を返し,第 2 の戻り値を,対応する execまたは longjmp関数呼び出しからではなく,自分で返したような形で返します。
しかし, setjmpとは違って vforkでは, volatile で修飾されたものも含むすべてのローカルな自動変数が, vforkの呼び出しとそれに対応する execルーチンの呼び出しの間で変更された場合には,不定の値を持つ可能性があります。
0 コンテキストの作成に成功したことを示します。 ゼロ以外 子プロセスのプロセス ID (PID) を示します。 - 1 エラーを示します。-- 子プロセスの作成に失敗しました。
引数リストに基づいて,書式付きの出力をプリントします。
#include <stdio.h>int vfprintf (FILE *file_ptr, const char *format, va_list ap);
file_ptr
出力の送信先のファイルへのポインタ。format
書式指定を含んだ文字列へのポインタ。書式指定および変換指定とそれぞれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。ap
結果として得られる型が,書式指定で与えられた変換指定に対応する式のリスト。
vprintfと vsprintfも参照してください。
x 書き込まれたバイト数。 負の値 出力エラーを示します。関数は errno を設定します。設定される可能性のある errno 値のリストについては, fprintf を参照してください。
引数リストに基づいて,書式付き入力を読み込みます。
#include <stdio.h>int vfscanf (FILE *file_ptr, const char *format, va_list ap);
file_ptr
入力テキストを提供するファイルへのポインタ。format
書式指定を含んだ文字列へのポインタ。ap
結果として得られる型が,書式指定で与えられた変換指定に対応する式のリスト。
vfscanf関数は fscanf関数に似ていますが,可変個の引数を指定して呼び出される代わりに, va_start( また,おそらくはそれ以降の va_arg呼び出し ) によって初期化された引数リストを指定して呼び出される点が異なります。変換指定が与えられなかった場合,入力ポインタは省略することができます。そうでなければ,関数呼び出しは変換指定と同じ数の入力ポインタを持っていなくてはならず,変換指定は入力ポインタの型と一致していなくてはなりません。
変換指定は,左から右の順序で入力ソースと照合されます。余分な入力ポインタが存在する場合には,無視されます。
書式指定および変換指定とそれぞれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。
この関数は,照合に成功し,代入が行われた入力項目の数を返します。
vscanfと vsscanfも参照してください。
n 照合に成功し,代入が行われた入力項目の数。 EOF ファイルの終端に達したか,読み込みエラーが発生したことを示します。読み込みエラーが発生した場合,関数は errno を以下のいずれかに設定します。
- EILSEQ---無効な文字を検出した。
- EINVAL---引数が足りなかった。
- ENOMEM---変換のために利用できるメモリが足りなかった。
- ERANGE---浮動小数点計算のオーバフロー。
- EVMSERR---変換不可能な OpenVMS エラー。 vaxc$errno に OpenVMS エラー・コードが含まれている。オーバフローのために数値への変換が失敗した可能性がある。
また,関数は I/O サブシステムから返されたエラーの結果として, errno を以下の値に設定することもあります。
- EBADF---ファイル記述子が有効でない。
- EIO---I/O エラー。
- ENXIO---デバイスが存在しない。
- EPIPE---パイプが破壊されている。
- EVMSERR---変換不可能な OpenVMS エラー。 vaxc$errno に OpenVMS エラー・コードが含まれている。等価な C エラー・コードがない I/O エラーが発生した可能性がある。
ワイド文字書式文字列の制御下で,ストリームに出力を書き込みます。
#include <wchar.h>int vfwprintf (FILE *stream, const wchar_t *format, va_list ap);
stream
ファイル・ポインタ。format
書式指定を含んだワイド文字列へのポインタ。書式指定および変換指定とそれぞれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。ap
出力に必要な項目の可変リスト。
vfwprintf関数は, fwprintf関数の可変引数リストを ap 引数に置き換えたものです。 ap の初期化は, <stdarg.h>の va_startマクロ ( また,おそらくはその後の va_arg呼び出し ) を使って行います。stream がポイントするストリームが向きを持っていなかった場合, vfwprintfはストリームをワイド向きにします。
fwprintfも参照してください。
n 書き込まれたワイド文字の数。 負の値 エラーを示します。関数は errno を以下のいずれかに設定します。
- EILSEQ---無効な文字を検出した。
- EINVAL---引数が足りなかった。
- ENOMEM---変換のために利用できるメモリが足りなかった。
- ERANGE---浮動小数点計算のオーバフロー。
- EVMSERR---変換不可能な OpenVMS エラー。 vaxc$errno に OpenVMS エラー・コードが含まれている。オーバフローのために数値への変換が失敗した可能性がある。
また,関数は I/O サブシステムから返されたエラーの結果として, errno を以下の値に設定することもあります。
- EBADF---ファイル記述子が有効でない。
- EIO---I/O エラー。
- ENOSPC---ファイルを含んでいるデバイス上に空きスペースがない。
- ENXIO---デバイスが存在しない。
- EPIPE---パイプが破壊されている。
- ESPIPE---追加用にオープンされたファイル内での不正なシーク。
- EVMSERR---変換不可能な OpenVMS エラー。 vaxc$errno に OpenVMS エラー・コードが含まれている。等価な C エラー・コードがない I/O エラーが発生した可能性がある。
次の例は,一般的なエラー報告ルーチンにおける vfwprintf関数の使用例を示しています。
#include <stdarg.h> #include <stdio.h> #include <wchar.h> void error(char *function_name, wchar_t *format, ...); { va_list args; va_start(args, format); /* print out name of function causing error */ fwprintf(stderr, L"ERROR in %s: ", function_name); /* print out remainder of message */ vfwprintf(stderr, format, args); va_end(args); }
ワイド文字書式文字列の制御下で,ストリームから入力を読み込みます。
#include <wchar.h>int vfwscanf (FILE *stream, const wchar_t *format, va_list ap);
stream
ファイル・ポインタ。format
書式指定を含んだワイド文字列へのポインタ。ap
結果として得られる型が,書式指定で与えられた変換指定に対応する式のリスト。
vfwscanf関数は fwscanf関数に似ていますが,可変個の引数を指定して呼び出される代わりに, va_start( また,おそらくはそれ以降の va_arg呼び出し) によって初期化された引数リスト (ap) を指定して呼び出される点が異なります。stream がポイントするストリームが向きを持っていなかった場合, vfwscanfはストリームをワイド向きにします。
書式指定および変換指定とそれぞれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。
n 照合に成功し,代入が行われたワイド文字入力項目の数。 EOF 変換が行われる前に読み込みエラーが発生したことを示します。関数は errno を設定します。この関数が設定する値のリストについては, vfscanf を参照してください。
引数リストに基づいて,書式付きの出力をプリントします。この関数は printf関数に似ていますが,可変個の引数を指定して呼び出される代わりに, <stdarg.h>の va_startマクロ ( また,おそらくはそれ以降の va_arg呼び出し ) によって初期化された引数リスト <stdarg.h>を指定して呼び出される点が異なります。
#include <stdio.h>int vprintf (const char *format, va_list ap);
format
書式指定を含んだ文字列へのポインタ。書式指定および変換指定とそれぞれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。ap
出力に必要な項目の可変リスト。
vfprintfおよび vsprintf関数を参照してください。
x 書き込まれたバイト数。 負の値 出力エラーを示します。関数は errno を設定します。設定される可能性がある errno 値のリストについては, fprintf を参照してください。
引数リストに基づいて,書式付きの入力を読み込みます。
#include <stdio.h>int vscanf (const char *format, va_list ap);
format
書式指定を含んだ文字列へのポインタ。ap
結果として得られる型が,書式指定で与えられた変換指定に対応する式のリスト。
vscanf関数は scanf関数に似ていますが,可変個の引数を指定して呼び出される代わりに, va_startマクロ (また,おそらくはそれ以降の va_arg呼び出し) によって初期化された引数リスト (ap) を指定して呼び出される点が異なります。書式指定および変換指定とそれぞれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。
scanf, vfscanf,および vsscanfも参照してください。
n 照合に成功し,代入が行われた入力項目の数。 EOF 変換が行われる前に読み込みエラーが発生したことを示します。関数は errno を設定します。この関数が設定する値のリストについては, vfscanf を参照してください。
引数リストに基づいて,書式付きの出力をプリントします。
#include <stdio.h>int vsnprintf (char *str, size_t n, const char *format, va_list ap);
str
書式付きの出力を受け取る文字列へのポインタ。format
書式指定を含んでいる文字列へのポインタ。書式指定および変換指定とそれぞれに対応する引数の詳細については,『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 2 章を参照してください。ap
結果として得られる型が,書式指定で与えられた変換指定に対応する式のリスト。
vsnprintf関数は, snprintf関数と同じです。ただし,可変個の引数で呼び出されるのではなく, va_start(および,それ以降の va_arg呼び出し) で初期化された引数リストで呼び出されます。この関数は, va_endマクロを呼び出しません。これは,この関数は va_argマクロを呼び出すため,呼び出し後の ap の値が規定されていないからです。
vsnprintfを使用するアプリケーションは,後で va_end(ap) を呼び出して,クリーン・アップを行う必要があります。
x n が十分に大きい場合に, str に書き込まれるバイトの数 (末尾の null バイトを除く) です。 負の値 出力エラーが発生したことを示します。この関数は, errno を設定します。設定される可能性のある errno 値のリストについては, fprintf を参照してください。
前へ | 次へ | 目次 | 索引 |