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


91

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

execl
execle
execlp
execv
execve
execvp

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

回答:


181

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

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

    • L:コール内の個々のパラメータ(変数引数リスト): 、execl()execle()execlp()およびexeclpe()
    • V:* charの配列としてexecv()execve()execvp()、及びexecvpe()

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

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

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


1
私がこれまでに見た中で最も良い説明。公式のドキュメント/リファレンスとほぼ同じくらい短いですが、それでも1000倍表現力があり、有益で、理解しやすいものです。ありがとうございました。
アキト

5

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

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


2
これは実際には質問に答えるものではなく、リンクのみです。
ジャン=フランソワ・ファーブル

ここに到着する前に、ウェブサイトのドキュメントを読みましたが、あまり役に立ちませんでした。精巧なはずですが、説明は非常に短いです。さらに、最初から検索している場合、探しているものの正しい説明を見つけるのは困難です。
アキト

-4

これは、CランタイムライブラリのPosix拡張機能です。Posixの公式ドキュメントが不十分な場合は、本をお勧めします-Samuel P. Harbison、Guy L.Steele、2002年「CAリファレンス」ページ#416-その質問をカバーします。


2
このリンクは質問に答えることができますが、ここに答えの本質的な部分を含めて、参照用のリンクを提供することをお勧めします。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります。-レビューから
2017

リンクは、読者に役立つアマゾンとposxis標準へのリンクでした。わかりました、あなたが尋ねたように私はリンクを削除しました、私はこれがより良いことに同意しません。読みやすくなった場合は、donwvoteを削除してください。
bruziuz 2017

1
私はあなたの答えに反対票を投じませんでした。私はあなたの答えについてレビューをしましたが、それは質が低いと思いました。リンクを削除するつもりはありませんでした。ここでのポイントは、将来の読者が答えを即座に理解するのに役立つリンクからの関連する抜粋を含めることです。回答にリンクを投稿するだけでは、だれも役に立ちません。
31piy 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.