web-dev-qa-db-ja.com

CおよびC ++で使用されるexecの異なるバージョンは何ですか?

これらは、C(およびC++)で使用できるexecのすべてのバージョンです

execl
execle
execlp
execv
execve
execvp

それらの違いは何ですか?どちらを使用するかをどのように知っていますか?

79
node ninja

違いは次の組み合わせです。

  1. L vs V:実行されたプログラムにパラメーターを渡すかどうか

    • [〜#〜] l [〜#〜]:呼び出しの個々のパラメーター(可変引数リスト):execl()execle()execlp()、およびexeclpe()
    • [〜#〜] v [〜#〜]:char * execv()execve()execvp()の配列としてexecvpe()

    配列形式は、事前に知られていないように、実行されたプロセスに送信されるパラメーターの数が可変の場合に便利です。したがって、関数呼び出しに固定数のパラメーターを入れることはできません。

  2. [〜#〜] e [〜#〜]:末尾に「e」が付いているバージョンでは、生成されたプロセス環境に追加される文字列のセットであるchar *の配列を追加で渡すことができます。実行されたプログラムが起動する前。パラメータを渡すもう1つの方法です。

  3. [〜#〜] p [〜#〜]:そこに「p」が付いているバージョンは、環境パス変数を使用して、実行するために指定された実行可能ファイルを検索します。 「p」のないバージョンでは、現在の作業ディレクトリにない場合、実行可能ファイルのファイル名の前に絶対または相対ファイルパスを追加する必要があります。

161
Christo

Opengroupは、コアc/c ++関数の最良の一般的なリファレンスの1つです。

Exec *のドキュメントは次のとおりです。 http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html

4
IanNorton