0

execvp() システム コールが実行されると、呼び出しが成功した場合に戻り値はありません。それは、プロセスが決して終了しないことを意味しますか? もしそうなら、それは常に実行中の状態ですか?これが基本的な質問であることは承知していますが、man ページで「エラーが発生した場合にのみ exec() 関数が返される。戻り値は -1 であり、エラーを示すために errno が設定されます。」

前もって感謝します!

4

1 に答える 1

2

execve は、成功すると、現在実行中のプロセス イメージを別の実行可能ファイルに完全に置き換えます。したがって、元のプロセスがなくなるため、関数が戻ることはありません。最初のプロセスで exit() を呼び出したかのようです。

返される場合は、明らかに現在のプロセス イメージが置き換えられていないことを意味します。何か問題が発生したためです。errno は、何が問題だったかを示します。

于 2013-01-09T05:01:26.567 に答える