HP OpenVMS Systems Documentation |
| 前へ | 次へ | 目次 | 索引 |
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#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 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execle (char *file_spec, char *arg0, ..., (char *)0, char *envp[]); (ISO POSIX-1)
int execle (char *file_spec, ...); (Compatability)
file_spec
子プロセスで起動される新しいイメージの完全なファイル指定。arg0, ...
ヌル区切り文字列を指すポインタのシーケンス。POSIX-1 形式を使用する場合は,少なくとも 1 つの引数を指定する必要があり,その引数は新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指さなければなりません ( このポインタは NULL ポインタでも構いませんが,その場合は, execleは何も実行しません )。最後のポインタは NULL ポインタでなければなりません。互換形式を使用するときも,この規則が適用されます。
envp
プログラムの環境を指定する文字列配列。 envp の各文字列は次の形式です。
name = value
name は次の名前のいずれかとして指定でき, value は name に関連付けられるヌル区切り文字列です。
- HOME --- ログイン・ディレクトリ
- TERM --- 使用している端末の種類
- PATH --- デフォルトのデバイスとディレクトリ
- USER --- プロセスを開始したユーザの名前
envp の最後の要素は NULL ポインタでなければなりません。
オペレーティング・システムがプログラムを実行する場合,現在の環境ベクタ (envp) のコピーを外部変数 environ に格納します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execlp (const char *file_name, const char *arg0, ..., (char *)0); (ISO POSIX-1)
int execlp (char *file_name, ...); (Compatability)
file_name
子プロセスで起動される新しいイメージのファイル名。ファイルのデバイスおよびディレクトリ指定は, VAXC$PATH 環境名を検索することにより取得されます。argn
ヌル区切り文字列を指すポインタのシーケンス。規則では,少なくとも 1 つの引数を指定しなければならず,その引数は新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。...
文字列を指すポインタのシーケンス。リストを終了するために少なくとも 1 つのポインタが必要です。このポインタは NULL でなければなりません。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execv (char *file_spec, char *argv[]);
file_spec
子プロセスで起動される新しいイメージの完全なファイル指定。argv
ヌル区切り文字列を指すポインタの配列。これらの文字列は,新しいプロセスで使用できる引数リストを構成します。規則では,argv[0] は,新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。 argv は NULL ポインタで終了します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execve (const char *file_spec, char *argv[], char *envp[]);
file_spec
子プロセスで起動される新しいイメージの完全なファイル指定。argv
ヌル区切り文字列を指すポインタの配列。これらの文字列は新しいプロセスで使用できる引数リストを構成します。規則では,argv[0] は,新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。 argv は NULL ポインタで終了します。envp
プログラムの環境を指定する文字列配列。 envp の各文字列は次の形式です。
name = value
name は次の名前のいずれかとして指定でき, value は name に関連付けられるヌル区切り文字列です。
- HOME --- ログイン・ディレクトリ
- TERM --- 使用している端末の種類
- PATH --- デフォルトのデバイスとディレクトリ
- USER --- プロセスを開始したユーザの名前
envp の最後の要素は NULL ポインタでなければなりません。
オペレーティング・システムがプログラムを実行する場合,現在の環境ベクタ (envp) のコピーを外部変数 environ に格納します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
子プロセスで起動されるイメージの名前を渡します。この関数は非リエントラントです。
#include <unistd.h>int execvp (const char *file_name, char *argv[]);
file_name
子プロセスで起動される新しいイメージのファイル名。ファイルのデバイスおよびディレクトリ指定は環境名 VAXC$PATH を検索することにより取得されます。argv
ヌル区切り文字列を指すポインタの配列。これらの文字列は新しいプロセスで使用できる引数リストを構成します。規則では,argv[0] は,新しいプロセス・ファイル名 ( またはその最後のコンポーネント ) と同一である文字列を指すポインタでなければなりません。 argv は NULL ポインタで終了します。
exec関数の動作方法については, execlを参照してください。
- 1 異常終了を示します。
関数を呼び出したプログラムの実行を終了します。これらの関数は非リエントラントです。
#include <stdlib.h>void exit (int status);
#include <unistd.h>
void _exit (int status);
status
状態値 EXIT_SUCCESS (1) または EXIT_FAILURE (2),または 3〜255 の数値。
- 状態値 1 または EXIT_SUCCESS は,OpenVMS の SS$_NORMAL 状態コードに変換され, OpenVMS の正常終了値を返します。
- 状態値 2 または EXIT_FAILURE はエラー・レベル終了状態に変換されます。状態値は親プロセスに渡されます。
- 他の状態値はそのまま変更されません。
これらの状態値を使用するには, <unistd.h>を取り込み, _POSIX_EXIT 機能テスト・マクロを設定してコンパイルします ( ファイルを取り込む前に,ファイルの先頭に #define _POSIX_EXITを指定するか,または /DEFINE=_POSIX_EXIT を指定します )。この動作が可能なのは, OpenVMS バージョン 7.0 およびそれ以降のシステムの場合だけです。
プロセスが DCL で起動された場合,状態は DCL によって解釈され,メッセージが表示されます。プロセスが vforkまたは exec関数を使用して生成された子プロセスの場合は,子プロセスは終了し,制御は親に返されます。2 つの関数は同じです。 _exit関数が残されているのは, VAX C との互換性を維持するためです。
exit関数と _exit関数では, $EXIT システム・サービスを使用します。ハイバネーションおよびスケジューリングされたウェイクアップ修飾子を使用して RUN コマンドによってプロセスが起動される場合は, exitまたは _exit呼び出しが実行されたときに,プロセスはハイバネーション状態に正しく戻らないことがあります。
注意
EXIT_SUCCESS と EXIT_FAILURE はどの ANSI C コンパイラ間でも移植可能であり,それぞれ正常終了と異常終了を示します。 OpenVMS システムでは,OpenVMS の条件コードに変換され,重大度がそれぞれ正常終了または異常終了に設定されます。子プロセスでは,親プロセスに渡すデータの量を少なくするために, 3〜255 の範囲の値を使用できます。親は wait, wait3, wait4, waitpid関数を使用してこのデータを取得します。
底 e に対する引数のべき乗を返します。
#include <math.h>double exp (double x);
float expf (float x); (Alpha, I64)
long double expl (long double x); (Alpha, I64)
double expm1 (double x); (Alpha, I64)
float expm1f (float x); (Alpha, I64)
long double expm1l (long double x); (Alpha, I64)
x
実数値。
exp関数は, e**x として定義される指数関数の値を計算します。ただし,e は自然対数の底として使用される定数です。expm1関数は,x の値が小さい場合でも, exp(x) - 1 を正確に計算します。
オーバフローが発生した場合, exp関数は可能な最大の浮動小数点数値を返し, errnoを ERANGE に設定します。可能な最大の浮動小数点数値を表すために,定数 HUGE_VAL が <math.h>ヘッダ・ファイルに定義されています。
x 引数の指数値。 HUGE_VAL オーバフローが発生したことを示します。 errno は ERANGE に設定されます。 0 アンダフローが発生したことを示します。 errno は ERANGE に設定されます。 NaN x が NaN であることを示します。 errno は EDOM に設定されます。
引数の絶対値を返します。
#include <math.h>double fabs (double x);
float fabsf (float x); (Alpha, I64)
long double fabsl (long double x); (Alpha, I64)
x
実数値。
x 引数の絶対値。
ファイルのオーナとグループを変更します。
#include <unistd.h>int fchown (int fildes, uid_t owner, gid_t group);
fildes
オープンされているファイルの記述子。owner
ファイルの新しいオーナに対応するユーザ ID。group
ファイルのグループに対応するグループ ID。
fchown関数は chownと同じ機能を実行しますが,オーナとグループを変更するファイルをファイル記述子 fildes で指定する点が異なります。
0 正常終了を示します。 - 1 異常終了を示します。 errno が次のいずれかの値に設定されます。 次の場合, fchown 関数は 異常終了します。
- EBADF -- fildes 引数がオープンされているファイルの記述子でありません。
- EPERM -- 有効なユーザ ID がファイルのオーナに対応しないか,またはプロセスに適切な特権がありません。
- EROFS -- fildes で参照されるファイルは読み込み専用ファイル・システムに存在します。
次の場合, fchown 関数は 異常終了することがあります。
- EINVAL -- オーナ ID またはグループ ID がインプリメンテーションでサポートされない値です。
- EIO---物理的な I/O エラーが発生しました。
- EINTR -- fchown 関数が検出されたシグナルによって割り込まれました。
| 前へ | 次へ | 目次 | 索引 |