前へ | 次へ | 目次 | 索引 |
実行時に共用可能イメージのロードと呼び出しを可能にするために,動的ライブラリ・ローダに対するインタフェースを提供します。
#include <dlfcn.h>void *dlopen (char *pathname, int mode);
pathname
共用可能イメージの名前。この名前は,この後, dlsym関数で使用するために保存されます。mode
この引数は OpenVMS システムでは無視されます。
dlopen関数は,実行時に共用可能イメージのロードと呼び出しを可能にするために,動的ライブラリ・ローダに対するインタフェースを提供します。この関数は共用可能イメージをロードするわけではなく, dlsym関数でこの後使用するために pathname 引数を保存します。 LIB$FIND_IMAGE_SYMBOL を呼び出すことにより,共用可能イメージを実際にロードする関数は dlsymです。
dlopen関数の pathname 引数は,共用可能イメージの名前でなければなりません。この名前は filename 引数として, dlsym関数から LIB$FIND_IMAGE_SYMBOL ルーチンにそのまま渡されます。 LIB$FIND_IMAGE_SYMBOL の呼び出しに image-name 引数を指定しないと,デフォルトのファイル指定である SYS$SHARE:.EXE がイメージ名に適用されます。
dlopen関数は, dlsymまたは dlclose呼び出しで使用されるハンドルを返します。エラーが発生した場合は,NULL ポインタが返されます。
x dlsym または dlclose 呼び出しで使用されるハンドル。 NULL エラーを示します。
共用可能イメージから検索したシンボル名のアドレスを返します。
#include <dlfcn.h>void *dlsym (void *handle, char *name);
handle
共用可能イメージを指すポインタ。name
シンボル名を指すポインタ。
dlsym関数は,共用可能イメージから handle に対応するシンボル名を検索して,そのアドレスを返します。シンボルが見つからない場合は,NULL ポインタを返します。
x 検索されたシンボル名のアドレス。 NULL シンボルが見つからなかったことを示します。
均一に分布した擬似乱数シーケンスを生成します。 48 ビットの負でない倍精度浮動小数点数値を返します。
#include <stdlib.h>double drand48 (void);
drand48関数は,線形合同アルゴリズム (linear congruential algorithm) と 48 ビット整数算術演算を使用して,擬似乱数を生成します。0.0 <= y < 1.0 の範囲で均一に分布した,負でない倍精度浮動小数点数値を返します。
drand48を呼び出す前に, srand48, seed48, lcong48のいずれかを使用して,乱数ジェネレータを初期化します。 drand48関数を起動する前に初期化が必要なのは,最後に生成された 48 ビット Xi が内部バッファに格納されるからです ( 推奨できる方法ではありませんが,最初に初期化関数を呼び出さずに, drand48, lrand48, mrand48関数のいずれかを呼び出した場合,一定のデフォルト初期化値が自動的に与えられます )。
drand48関数は,線形合同公式に従って, 48 ビット整数値 Xi のシーケンスを生成することにより動作します。
Xn+1 = (aXn+c)mod m n >= 0
引数 m は 248 に等しいため, 48 ビットの整数演算が実行されます。 lcong48関数を呼び出した場合を除き,乗数値 a と加数値 c は次のようになります。
a = 5DEECE66D16 = 2736731631558 c = B16 = 138
drand48から返される値は,シーケンス内の次の 48 ビット Xi を最初に生成することにより計算されます。その後,返されるデータ項目の型に従って,適切なビットが Xi の上位 (最上位) ビットからコピーされ,戻り値に変換されます。
srand48, seed48, lcong48, lrand48, mrand48も参照してください。
n 負でない倍精度浮動小数点数値。
open, creat, pipeから返されたファイル記述子によって指定されるファイルを参照する新しい記述子を割り当てます。
#include <unistd.h>int dup (int file_desc1);
int dup2 (int file_desc1, int file_desc2);
file_desc1
複製するファイル記述子。file_desc2
file_desc1 によって指定されるファイルに割り当てられる新しいファイル記述子。
dup関数を呼び出すと,前に割り当てが解除された記述子が引数を参照するようになります。一方, dup2関数を使用すると, 2 番目の引数が最初の引数と同じファイルを参照するようになります。引数 file_desc1 がオープンされているファイルを記述しない場合は,この引数は不正です。新しいファイル記述子を割り当てることができない場合は, file_desc2 は不正です。 file_desc2 がオープンされているファイルに接続されている場合は,そのファイルはクローズされます。
n 新しいファイル記述子。 - 1 不正な引数が関数に渡されたことを示します。
文字が端末画面に表示されるのか,表示されないのかを設定します。このシングル文字入力モードは,Curses でのみサポートされます。
#include <curses.h>void echo (void);
void noecho (void);
noecho関数は, wgetchおよび wgetstrで端末画面から入力を受け付けるときに役立ちます。この関数は,入力された文字が画面に表示されないようにします。
引数をヌル区切りの ASCII 数字列に変換し,数字列のアドレスを返します。この数字列は, HP C RTL で作成されたスレッド固有のメモリ記憶位置に格納されます。
#include <stdlib.h>char *ecvt (double value, int ndigits, int *decpt, int *sign);
value
ヌルで区切られた ASCII 数字列に変換される double型のオブジェクト。ndigits
変換後の数字列で使用される ASCII 数字の桁数。decpt
返される数字列の 1 文字目を基準にした小数点の位置。 intの値が負の場合は,小数点の位置は,返された数字の左側に decpt 個のスペースを付加した位置になります ( スペースには 0 が埋められます )。値が 0 の場合は,小数点の位置は返された数字列の最初の桁のすぐ左に設定されます。sign
value 引数が正の値であるか,負の値であるかを示す整数値。value が負の場合は, sign によって指定されるアドレスに 0 以外の値が代入されます。この引数が負でない場合は, sign によって指定されるアドレスに 0 が代入されます。
ecvt関数は,value を長さ ndigits のヌル区切り数字列に変換し,数字列を指すポインタを返します。 C の E 形式で ndigits 桁の数字を出力するために,下位桁が適切な桁に丸められます。decpt 引数は,数字列の最初の数字を基準にして小数点の位置を表します。ecvt関数を繰り返し呼び出すと,既存の数字列は上書きされます。
ecvt, fcvt, gcvt関数は,浮動小数点算術演算に関して IEEE 標準で指定されている次の特殊な値を表します。
値 表現 クワイエット NaN NaNQ シグナリング NaN NaNS +無限大 無限大 - 無限大 - 無限大
これらの各値に割り当てられる符号は,sign 引数に格納されます。 IEEE 浮動小数点表現では,0 (ゼロ) という値は正の場合も負の場合もあり,どちらであるかは sign 引数によって設定されます。
gcvtと fcvtも参照してください。
x 変換後の文字列の値。
処理完了時に,グループ・データベースをクローズします。
#include <grp.h>void endgrent (void);
endgrent関数は,グループ・データベースをクローズします。この関数は,必ず成功します。戻り値はなく, errnoは設定されません。
getpwentが使用したユーザ・データベースとプライベート・ストリームをクローズします。
#include <pwd.h>void endpwent (void);
endpwent関数は, getpwentが使用したユーザ・データベースとプライベート・ストリームをクローズします。戻り値はありません。入出力エラーが発生した場合,この関数は errnoに EIO を設定します。
getpwent, getpwuid, getpwnam, setpwentも参照してください。
端末画面をクリアし,Curses 構造体に割り当てられている仮想メモリを解放します。
#include <curses.h>void endwin (void);
Curses 関数を呼び出すプログラムは,終了する前に endwin関数を呼び出して,端末画面の元の環境を復元する必要があります。
均一に分布した擬似乱数シーケンスを生成します。 48 ビットの負でない倍精度浮動小数点数値を返します。
#include <stdlib.h>double erand48 (unsigned short int xsubi[3]);
xsubi
3 つの short intの配列。結合すると 48 ビット整数が作成されます。
erand48関数は,線形合同アルゴリズム (linear congruential algorithm) および 48 ビット整数演算を使用して,擬似乱数を生成します。0.0 <= y < 1.0 の範囲で均一に分布した負でない倍精度浮動小数点数値を返します。
erand48関数は,線形合同公式に従って, 48 ビットの整数値 Xi のシーケンスを生成することにより動作します。
Xn+1 = (aXn+c)mod m n >= 0
引数 m は 248 に等しいため, 48 ビットの整数演算が実行されます。 lcong48関数を呼び出した場合を除き,乗数値 a と加数値 c は次のようになります。
a = 5DEECE66D16 = 2736731631558 c = B16 = 138
erand48関数を使用する場合,呼び出し元のプログラムは xsubi 引数として配列を渡さなければなりません。最初の呼び出しでは,配列を擬似乱数シーケンスの値に初期化しなければなりません。 drand48関数と異なり,最初の呼び出しの前に初期化関数を呼び出す必要はありません。
erand48関数では,異なる引数を使用することにより,大きなプログラムの個別のモジュールが複数の独立した擬似乱数シーケンスを生成することができます。たとえば,1 つのモジュールが生成する乱数シーケンスは,他のモジュールから関数が呼び出される回数に依存しません。
n 負でない倍精度浮動小数点数値。
ブランクを書き込むことにより,ウィンドウを消去します。 erase関数は stdscrウィンドウに対して動作します。
#include <curses.h>int erase();
int werase (WINDOW *win);
win
ウィンドウを指すポインタ。
erase関数と werase関数はどちらも,終了した後,カーソルを端末画面の現在の位置に保持します。カーソルはホーム座標 (0,0) に戻りません。
OK 正常終了を示します。 ERR エラーを示します。
引数のエラー関数を返します。
#include <math.h>double erf (double x);
float erff (float x); (Alpha only)
long double erfl (long double x); (Alpha only)
double erfc (double x); (Alpha only)
float erfcf (float x); (Alpha only)
long double erfcl (long double x); (Alpha only)
x
実数値で表したラジアン値。
erf関数は x のエラー関数を返します。ただし, erf(x), erff(x), erfl(x) は, 0 〜x の範囲で曲線 e**( - t**2) の下の領域の 2/sqrt(pi) 倍に等しい値です。erfc関数は (1.0 - erf(x)) を返します。 erfc関数を呼び出すと, x が大きくなるにつれてアンダフローが発生する可能性があります。
x エラー関数 ( erf ) または補数エラー関数 ( erfc ) の値。 NaN x が NaN です。 errno は EDOM に設定されます。 0 アンダフローが発生しました。 errno は ERANGE に設定されます。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execl (const char *file_spec, const char *arg0, ..., (char *)0); (ISO POSIX-1)
int execl (char *file_spec, ...); (Compatability)
file_spec
子プロセスで起動される新しいイメージの完全なファイル指定。arg0, ...
ヌル区切り文字列を指すポインタのシーケンス。POSIX-1 形式を使用する場合は,少なくとも 1 つの引数を指定する必要があり,その引数は新しいプロセス・ファイル名 (またはその最後のコンポーネント) と同一である文字列を指さなければなりません ( このポインタは NULL ポインタでも構いませんが,その場合は, execleは何も実行しません )。最後のポインタは NULL ポインタでなければなりません。互換形式を使用するときも,この規則が適用されます。
exec関数の動作方法を理解するには,次の構文に示すように,OpenVMS システムが HP C プログラムを呼び出す方法を考慮する必要があります。
int main (int argc, char *argv[], char *envp[]);
識別子 argc は引数の数です。 argv は引数文字列の配列です。配列の最初のメンバ (argv[0]) にはイメージの名前が格納されます。引数は配列の 2 番目以降の要素に格納されます。配列の最後の要素は常に NULL ポインタです。
exec関数は,実行時システムが他の HP C プログラムを呼び出すのと同じ方法で子プロセスを呼び出します。 exec関数は,子で起動されるイメージの名前を渡します。この値は argv[0] に格納されます。しかし,これらの関数は,引数および環境情報を子に渡す方法が異なっています。
- 引数は個別の文字列で渡すことができ ( execl, execle, execlp),文字列配列で渡すこともできます ( execv, execve, execvp)。
- 環境は配列で明示的に渡すことができ ( execleと execve),親の環境から取得することもできます ( execl, execv, execlp, execvp)。
exec関数を起動する前に vforkが呼び出された場合は, exec関数が終了したときに,制御は vfork呼び出しの時点の親プロセスに返されます。 vforkが呼び出されていない場合は, exec関数は,子が実行を終了するまで待ち,実行が終了すると,親プロセスを終了します。詳細については, vforkおよび『HP C ランタイム・ライブラリ・リファレンス・マニュアル(上巻)』第 5 章を参照してください。
- 1 異常終了を示します。
前へ | 次へ | 目次 | 索引 |