Unixでは、exec()は実行後に返されませんが、system()は状況に応じて返される場合もありません。しかし、exec()システムコールが返されない理由と、Unix OSでexec()とsystem()がなぜ説明されるのかを説明できる人はいますか?
答え1
system() は fork() + exec() + wait() と同じです。つまり、プロセスがsystem()関数を実行すると新しいプロセスが作成され、そのプロセスが終了するのを待ちます。新しいプロセスは独自の環境でコマンドを実行し、完了するとサブプロセスのシグナルが呼び出し側に送信されます。
より多くの情報を知りたい場合man exec
man system
"execは現在のプロセスイメージを新しいプロセスイメージに置き換えます。"つまり、終了時に呼び出し元が新しいプロセスになったため、呼び出し元も終了することを意味します。
答え2
これは、現在実行中のプロセスをバイナリプログラムの情報に置き換えるUnixオペレーティングシステムのシステムコールです。