コンテンツ
のエグゼクティブ 関数ファミリーは、現在のプロセスイメージを新しいプロセスイメージに置き換えます。ここで説明する関数は、関数のフロントエンドです実行する(2).
これらの関数の最初の引数は、実行されるファイルのパス名です。
のconst char * arg とその後の楕円execl, execlp、およびエクセル 関数は次のように考えることができますarg0, arg1, ..., アーグン。これらは一緒に、実行されたプログラムで使用可能な引数リストを表す、ヌル終了文字列への1つ以上のポインターのリストを記述します。慣例により、最初の引数は、実行中のファイルに関連付けられたファイル名を指す必要があります。引数のリストしなければならない によって終了するヌル ポインタ。
のexecv そしてexecvp 関数は、新しいプログラムで使用できる引数リストを表すnullで終わる文字列へのポインターの配列を提供します。慣例により、最初の引数は、実行中のファイルに関連付けられたファイル名を指す必要があります。ポインタの配列しなければならない によって終了するヌル ポインタ。
のエクセル 関数はまた、実行されるプロセスの環境を次のように指定しますヌルパラメータリスト内の引数のリストを終了するポインタ、または追加のパラメータを持つargv配列へのポインタ。この追加パラメーターは、ヌル終了ストリングへのポインターの配列であり、しなければならない によって終了するヌル ポインタ。その他の関数は、外部変数から新しいプロセスイメージの環境を取得します環境 現在のプロセスで。
これらの関数の一部には特別なセマンティクスがあります。
機能execlp そしてexecvp 指定されたファイル名にスラッシュ(/)文字が含まれていない場合、実行可能ファイルを検索する際のシェルのアクションを複製します。検索パスは、環境で指定されたパスです。道 変数。この変数が指定されていない場合、デフォルトのパス「:/ bin:/ usr / bin」が使用されます。さらに、特定のエラーは特別に処理されます。
ファイルへのアクセスが拒否された場合(試行された実行する 戻ってきたEACCES)、これらの関数は、残りの検索パスの検索を続行します。ただし、他のファイルが見つからない場合は、グローバル変数とともに返されますエラー に設定EACCES.
ファイルのヘッダーが認識されない場合(試行された実行する 戻ってきたENOEXEC)、これらの関数は、最初の引数としてファイルのパスを使用してシェルを実行します。 (この試みが失敗した場合、それ以上の検索は行われません。)
戻り値
のいずれかエグゼクティブ 関数が戻ると、エラーが発生します。戻り値は-1で、グローバル変数エラー エラーを示すように設定されます。
使用おとこ コマンド(% おとこ)特定のコンピューターでコマンドがどのように使用されるかを確認します。
名前
execl、execlp、execle、execv、execvp —ファイルを実行する
あらすじ
#include extern char **環境; int execl(const char *道、const char *arg、...); int execlp(const char *ファイル、const char *arg、...); int execle(const char *道、const char *arg 、...、char * constenvp[]); int execv(const char *道、char * constargv[]); int execvp(const char *ファイル、char * constargv[]);