UNIXシステムのexec(const char * c)コマンドとsystem(const char * c)の違いは何ですか?UNIX系のexec()とsystem()の違い
両方は、システムコールを実行するためにCプログラムから呼び出すことができます。 2つの違いはありますか?
UNIXシステムのexec(const char * c)コマンドとsystem(const char * c)の違いは何ですか?UNIX系のexec()とsystem()の違い
両方は、システムコールを実行するためにCプログラムから呼び出すことができます。 2つの違いはありますか?
exec
は、指定されたプログラムでプロセスを置き換えます。あなたのプログラムは完了し、実行を続行しません。
spawn
は、(おそらく最初にfork
を使用して)新しいプロセスを開始し、プログラムの実行中に指定されたプログラムを実行します。
system
は、(おそらく最初にfork
を使用して)新しいプロセスを開始し、プログラムが待機している間に指定されたプログラムを実行します。子供が退去すると、あなたのプログラムは続行されます。
exec
はファイルを実行し、system
はシェルを実行し、それに引数を与えます。ウィキペディアから
:
それ(システム)の代わりに実行されるオブジェクトに引数を渡すと、単一の文字列がシステムシェルに渡されるの関数のEXEC /スポーンファミリーとは異なる、典型的には、POSIXシェル、/ bin/sh -c。
http://en.wikipedia.org/wiki/System_%28C_standard_library%29
コンソールを実行せず、シェルだけを実行します。 – glglgl
修正済み。ありがとうございました。 –
'system'も' '/ binに/ shが-c "コマンド" のように、シェルの下でコマンドを実行します。コマンドに面白い文字が含まれているとかなり大きな違いです。 – Nemo
@ニモ:偉大な点 –