名
execl、execlp、execle、execv、execvp - ファイルを実行する
シノプシス
#include
extern char ** environ;
int execl(const char * パス 、const char * arg 、...);
int execlp(const char * file 、const char * arg 、...);
int execle(const char * path 、const char * arg 、...、char * const envp []);
int execv(const char * path 、char * const argv []);
int execvp(const char * file 、char * const argv []);
コマンドの概要
関数のexecファミリは、現在のプロセスイメージを新しいプロセスイメージに置き換えます。 ここで説明する関数は、関数execve (2)のフロントエンドです。
これらの関数の最初の引数は、実行されるファイルのパス名です。
execl 、 execlp 、およびexecle関数のconst char * argとそれに続く省略記号は、 arg0 、 arg1 、...、 argnと考えることができます。 一緒に実行されたプログラムが利用できる引数リストを表すヌル終端文字列へのポインタのリストを記述します。 規則の第1引数は、実行中のファイルに関連付けられたファイル名を指す必要があります 。 引き数のリストは、 NULLポインターで終了する必要があります。
execv関数とexecvp関数は、新しいプログラムが利用できる引数リストを表すヌル終端文字列へのポインタの配列を提供します。 規則の第1引数は、実行中のファイルに関連付けられたファイル名を指す必要があります。 ポインタの配列は、 NULLポインタで終了する必要があります。
execle関数は、パラメータリスト内の引数のリストを終了するNULLポインタ、または追加のパラメータを指定してargv配列へのポインタをたどることによって、実行されたプロセスの環境も指定します。 この追加パラメータは、NULLで終了する文字列へのポインタの配列であり 、 NULLポインタで終了する必要があります。 他の関数は、現在のプロセスの外部変数environから新しいプロセスイメージの環境を取得します。
これらの関数の中には特別なセマンティクスがあります。
execlpとexecvp関数は、指定されたファイル名にスラッシュ(/)文字が含まれていない場合、実行可能ファイルを検索する際にシェルのアクションを複製します。 検索パスは、 PATH変数によって環境内で指定されたパスです。 この変数が指定されていない場合は、デフォルトのパス ``:/ bin:/ usr / bin ''が使用されます。 さらに、特定のエラーは特別に扱われます。
ファイルに対するアクセス権が拒否された場合(試みられたexecveはEACCESを返しました)、これらの関数は検索パスの残りの部分の検索を続けます。 ただし、他のファイルが見つからない場合は、グローバル変数errnoをEACCESに設定して戻ります 。
ファイルのヘッダーが認識されない場合(試みられたexecveがENOEXECを返した場合 )、これらの関数はファイルのパスを最初の引数としてシェルを実行します。 (この試みが失敗した場合、それ以上の検索は行われません)。
戻り値
exec関数のいずれかが返された場合、エラーが発生します。 戻り値は-1で、グローバル変数errnoはエラーを示すように設定されます。
重要: manコマンド( %man )を使用して、特定のコンピュータでコマンドがどのように使用されているかを確認してください。