1

ここにこのコードがあります。これは、プログラムを異なるプロセスで並列または順次に複数回実行することです。一定時間後、プログラムを停止するには、すべての子を殺す必要があります。

しかし、子を殺そうとすると、現在この行 execvp(cmdTokens[0], cmdTokens); を実行している子は、終了するまで停止しません。ループを強制終了するようですが、現在実行中の子は強制終了しません。

4

1 に答える 1

1

関数の exec クラスは、成功した場合、戻りません。それらは本質的に、プロセスを呼び出しているものに変換します。これが、元のプロセスを実行し続けたいと仮定して、exec を呼び出す前に fork する理由です。プロセスの開始に失敗した場合 (たとえば、ファイルが見つからない場合など) に戻ることができます。

于 2012-10-01T23:15:32.953 に答える