wait()
Unix システムの本の関数について読んでいました。この本には、その中にあるプログラムが含まれてwait(NULL)
います。意味がわかりません。他の番組ではありました
while(wait(NULL)>0)
...それも頭を悩ませました。
上記の関数が何をしているのか、誰か説明できますか?
これらのシステム コールはすべて、呼び出しプロセスの子プロセスの状態変化を待ち、状態が変化した子プロセスに関する情報を取得するために使用されます。状態の変化は次のように見なされます。子供は合図で止められました。または子がシグナルによって再開された
wait()
そのため、子プロセスのいずれかが状態を変更するまでプロセスを待機させることができます。たとえば、存在します。waitpid()
がプロセス ID で呼び出された場合、その特定の子プロセスがその状態を変更するpid
のを待ちます。a が指定されていない場合は、呼び出しwait()
と同等であり、子プロセスがその状態を変更するのを待ちます。
このwait()
関数は、成功すると子 pid を返すため、次のようなループで呼び出されると:
while(wait(NULL)>0)
これは、すべての子プロセスが終了する (または状態が変化する) まで待機し、待機していない子プロセスがなくなるまで (またはエラーが発生するまで) 待機することを意味します。
簡単なグーグルが提案しwait(NULL)
、子プロセスのいずれかが完了するのを待ちます
wait(NULL)
これはと同等でなければなりませんwaitpid(-1, NULL, 0)
wait(NULL)
すべての子プロセスが完了するのを待ちます