これらの関数の初期引数は、実行されるファイルのパス名です。
Fn execl , Fn execlp , および Fn execle の各関数の Fa const char *arg および後続の省略記号は arg0 arg1 ..., argn と考えることができます。これらは実行された プログラムに利用できる引数リストを表す ナル文字で終わるストリングを指す 1 つまたは複数のポインタのリストを記述します。慣行で、最初の引数は、実行中の ファイルに対応するファイル名を指す必要があります。 引数のリストは NULL ポインタで終了させる 必要があり ます。
Fn exect , Fn execv , および Fn execvp の各関数は、新しいプログラムに利用できる引数リストを表す ナル文字で終わるストリングを指すポインタの配列を提供します。 慣行で、最初の引数は、実行中のファイルに対応するファイル名を 指す必要があります。 ポインタの配列は NULL ポインタで終了する 必要があり ます。
Fn execle と Fn exect の各関数も、実行されたプロセスの環境を指定します。 そのためには、パラメータリスト内にある引数リストを終了させる NULL ポインタ、または追加パラメータとともに argv 配列を指すポインタに従います。 この追加のパラメータは、ナル文字で終わるストリングを指すポインタの 配列であり、 NULL ポインタで終了される 必要があり ます。 他の関数は、現在のプロセス内の外部変数 environ から新しいプロセスイメージ用の環境を取り上げます。
これらの関数には特別な意味論のあるものもあります。
Fn execlp と Fn execvp の各関数は、指定されたファイル名にスラッシュ ``/ '' が含まれていない場合、実行可能ファイルを検索してシェルの処置を複製します。 検索パスは ``PATH '' 変数によって環境内で指定されたパスです。 この値が指定されない場合、 Aq paths.h の _PATH_DEFPATH 定義に従い、デフォルトのパスが設定されます。 これは、 ``/bin:/usr/bin: '' に設定されています。 さらに、特定のエラーが特別に取り扱われます。
エラーが曖昧な場合(簡単にするために、ここでは Er ENOEXEC 以外のすべてのエラーを曖昧と考えます。ただし、致命的なエラー Er EACCES だけが真に曖昧です)、 これらの関数は、ファイルを開始して、ファイルが存在するか、そして適切な実行 パーミッションがあるかを判定するかのように動作します。そうである場合、 これらの関数は Fn execve によって設定された値に復元されたグローバル変数 errno でただちに戻ります。 そうでない場合、検索が継続します。 検索が Fn execve の実行に成功せず、またはエラーのために終了せずに完了すると、 これらの関数は、適切な実行パーミッションのある少なくとも 1 つのファイルが 見つかったかどうかに従って、グローバル変数 errno を Er EACCES または Er ENOENT に設定して戻ります。
ファイルのヘッダが認識されない(試みた Fn execve が Er ENOEXEC を返した)場合、 これらの関数は、最初の引数としてファイルのパスがあるシェルを実行します (この試みが失敗した場合、それ以上の検索は行われません)。
Fn exect 関数は、プログラムトレース機能を有効にしてファイルを実行します ( ptrace(2) を参照)。
/bin/sh シェル
Fn exect と Fn execv は、ライブラリ関数 execve(2) について指定されたエラーに 関して errno を設定する可能性があります。
ファイルを実行しようとしている間にエラーが発生したときの Fn execlp と Fn execvp の動作は、あまり歴史的な慣行ではなく、従来から ドキュメント化されておらず、 POSIX 標準で指定されていません。
従来、 Fn execlp 関数と Fn execvp 関数は、上記のもの、および Er ETXTBSY , Er ENOMEM と Er E2BIG を除いてすべてのエラーを無視しました。 Er ETXTBSY でこれらの関数は 数秒間、スリープした後で再試行し、 Er ENOMEM と Er E2BIG でこれらの関数は 返ります。 これらは現在 Er ETXTBSY について戻り、存在と実行可能性をもっと注意深く判定します。 特に、パス接頭語内のアクセスできないディレクトリを表す Er EACCES が、不適切な実行パーミッションのあるファイルについての Er EACCES と混乱されないようになっています。 BSD 4.4 で、これらの関数は、 Er EACCES , Er ENOENT , Er ENOEXEC および Er ETXTBSY 以外のすべてのエラーで戻りました。 これは従来のエラー処理より劣ったものでした。パス接頭語についてのエラーの 無視を破り、異常に曖昧なエラー Er EFAULT と異常なエラー Er EIO の処理を改良するだけだからです。 動作は sh(1) の動作と一致するように変更されました。