exec() および system() システムコール

exec() および system() システムコール

Unixでは、exec()は実行後に返されませんが、system()は状況に応じて返される場合もありません。しかし、exec()システムコールが返されない理由と、Unix OSでexec()とsystem()がなぜ説明されるのかを説明できる人はいますか?

ベストアンサー1

system() は fork() + exec() + wait() と同じです。つまり、プロセスがsystem()関数を実行すると新しいプロセスが作成され、そのプロセスが終了するのを待ちます。新しいプロセスは独自の環境でコマンドを実行し、完了するとサブプロセスのシグナルが呼び出し側に送信されます。

より多くの情報を知りたい場合man exec man system

"execは現在のプロセスイメージを新しいプロセスイメージに置き換えます。"つまり、終了時に呼び出し元が新しいプロセスになったため、呼び出し元も終了することを意味します。

おすすめ記事