0

fork() は子プロセスを作成し、子に 0 を返し、子の pid を親に返すことを知っています。

私が理解していることから、wait() は、終了した子プロセスのある種の pid も返します。これは、フォーク後に親に返されるものと同じ pid ですか?

wait() の使い方がわかりません。

私の教科書はちょうど示しています

int ReturnCode;
while (pid!=wait(&ReturnCode));
/*the child has terminated with Returncode as its return code*/

これが何を意味するのかさえわかりません。

wait() を使用するにはどうすればよいですか? execv を使用して子プロセスを作成していますが、親を待機させたいです。誰か説明と例を挙げてください。

ありがとう

4

2 に答える 2

0

wait() は整数変数のアドレスを取り、完了したプロセスのプロセス ID を返します。

wait()システムコールの詳細

while (pid!=wait(&ReturnCode));

ループは、wait() によって返されたプロセス ID (pid) を、フォークまたは他のプロセススターターから以前に受け取った pid と比較しています。終了したプロセスが、この親プロセスが待機していたプロセスと同じではないことが判明した場合、wait() を続行します。

于 2011-06-20T05:53:03.297 に答える
0

wait()実際に終了した子プロセスの PID を返します。子プロセスが 1 つしかない場合は、実際に PID を確認する必要はありません (ただし、0 または負でないことを確認してください。待機呼び出しが失敗する可能性のある条件がいくつかあります)。ここで例を見つけることができます: http://www.csl.mtu.edu/cs4411/www/NOTES/process/fork/wait.html

于 2011-06-20T05:49:02.503 に答える