2011-09-12 19 views
2

UNIXシステムのexec(const char * c)コマンドとsystem(const char * c)の違いは何ですか?UNIX系のexec()とsystem()の違い

両方は、システムコールを実行するためにCプログラムから呼び出すことができます。 2つの違いはありますか?

答えて

8

execは、指定されたプログラムでプロセスを置き換えます。あなたのプログラムは完了し、実行を続行しません。

spawnは、(おそらく最初にforkを使用して)新しいプロセスを開始し、プログラムの実行中に指定されたプログラムを実行します。

systemは、(おそらく最初にforkを使用して)新しいプロセスを開始し、プログラムが待機している間に指定されたプログラムを実行します。子供が退去すると、あなたのプログラムは続行されます。

+3

'system'も' '/ binに/ shが-c "コマンド" のように、シェルの下でコマンドを実行します。コマンドに面白い文字が含まれているとかなり大きな違いです。 – Nemo

+0

@ニモ:偉大な点 –

1

execはファイルを実行し、systemはシェルを実行し、それに引数を与えます。ウィキペディアから

それ(システム)の代わりに実行されるオブジェクトに引数を渡すと、単一の文字列がシステムシェルに渡されるの関数のEXEC /スポーンファミリーとは異なる、典型的には、POSIXシェル、/ bin/sh -c。

http://en.wikipedia.org/wiki/System_%28C_standard_library%29

+0

コンソールを実行せず、シェルだけを実行します。 – glglgl

+1

修正済み。ありがとうございました。 –

関連する問題