exec()はUnixで実行した後は戻らないが、system()は返される場合と返らない場合があることを理解しています状況によっては返されませんが、exec()システムコールが返らない理由や、Unixオペレーティングシステムでのexec()とsystem()の違いについては誰でも説明できます
コメント
回答
system()はfork()+ exec()+ wait();と同等です。これは、プロセスがsystem()関数を実行すると、新しいプロセスを作成し、このプロセスの終了を待つことを意味します。新しいプロセスは、呼び出し元がシグナルの子を受信し終えると、独自の環境でコマンドを実行します。
詳細については、man exec
man system
“execは現在のプロセスイメージを新しいプロセスイメージに置き換えます”。これは、呼び出し元が新しいプロセスになったため、呼び出し元が終了すると終了することを意味します。
コメント
- そこには'それ以上のものがあります。
system()
実際にはexec()
がデフォルトのシェルであり、文字列を処理に渡すため、たとえば、パイプラインやその他のシェル機能を使用できます。
回答
これはUnixOSのシステム呼び出しで、現在実行中のプロセスをバイナリプログラムからの情報に置き換えます。
system(3)
はシステムコールではないことに注意してください。'それ自体がいくつかのライブラリ関数を作成します。システムコール。system()
は常に戻ります。