Cのwait() どの引数を渡すべきか

c linux operating-system
Cのwait() どの引数を渡すべきか

続行する前にすべての子プロセスが終了するのを待つために、どの引数をwait()に渡す必要がありますか

  1  1


ベストアンサー

wait`は1人の子を待つだけです。 ループ内で `errno == ECHILD`で -1`を返すまで、 `wait(NULL)`を呼び出す必要があります。

while (wait(NULL) != -1 || errno != ECHILD) { }

__

ECHILD (for wait())

呼び出しプロセスには、待機中の子はありません。

EINTR

WNOHANGは設定されておらず、ブロックされていないシグナルまたはSIGCHLDがキャッチされました。 signal(7)を参照してください。
__

そのため、キャッチされたシグナルにだまされないように、ECHILDを確認する必要があります。

5


タイトルとURLをコピーしました