1. ホーム
  2. c++

[解決済み] CとC++で使用されるexecのバージョンは何が違うのでしょうか?

2023-01-10 08:21:42

質問

C言語(およびC++)で使用可能なexecのバージョンは以下のとおりです。

execl
execle
execlp
execv
execve
execvp

両者の違いは何ですか?また、どちらを使うべきか、どのように判断すればよいのでしょうか?

どのように解決するのですか?

違いは、組み合わせです。

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

    • L : コール中の個々のパラメータ(変数引数リスト)。 execl() , execle() , execlp() そして execlpe()
    • V : char* の配列として execv() , execve() , execvp() そして execvpe()

    配列形式は、実行されるプロセスに送られるパラメータの数が可変である場合、つまり、事前にわからないため、関数呼び出しの際に固定数のパラメータを入れることができない場合に便利です。

  2. E : 最後に 'e' が付くバージョンでは、実行プログラムが起動する前に、 生成されたプロセスの環境に追加される文字列の集合である char* の配列を追加で渡すことができます。 これは、実行されたプログラムが起動する前に、生成されたプロセスの環境に追加される文字列のセットです。

  3. P : p' が入っているバージョンは、環境変数 PATH という名前の実行ファイルを検索する。p' のないバージョンでは、実行ファイルのファイル名が現在の作業ディレクトリにない場合、そのファイル名の前に絶対パスまたは相対パスを要求します。