これらは、C(およびC ++)で使用できるすべてのバージョンのexecです。
execl
execle
execlp
execv
execve
execvp
それらの違いは何ですか?どちらを使用するかをどうやって知るのですか?
回答:
違いは次の組み合わせです。
L vs V:実行されたプログラムにパラメータを次のように渡すかどうか
execl()
、execle()
、execlp()
およびexeclpe()
execv()
、execve()
、execvp()
、及びexecvpe()
配列形式は、実行されたプロセスに送信されるパラメーターの数が可変である場合に役立ちます。事前にわからないため、関数呼び出しに固定数のパラメーターを入力することはできません。
E:末尾に「e」が付いているバージョンでは、実行されたプログラムが起動する前に、生成されたプロセス環境に追加された文字列のセットであるchar *の配列を追加で渡すことができます。本当に、パラメータを渡すさらに別の方法。
P:「p」が含まれているバージョンは、環境変数PATH
を使用して、実行するように指定された実行可能ファイルを検索します。'p'のないバージョンでは、実行可能ファイルが現在の作業ディレクトリにない場合、実行可能ファイルのファイル名の前に絶対または相対ファイルパスを追加する必要があります。
Opengroupは、コアc / c ++関数の最も優れた一般的なリファレンスの1つです。
exec *のドキュメントは次のとおりです:http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
これは、CランタイムライブラリのPosix拡張機能です。Posixの公式ドキュメントが不十分な場合は、本をお勧めします-Samuel P. Harbison、Guy L.Steele、2002年「CAリファレンス」ページ#416-その質問をカバーします。