2016-10-01 2 views
2

wait/waitpidのデフォルトの動作は、プロセスの状態変化を待つことです。私が見つけることができないのは、同じpid_t引数を使用する2つのプロセスwaitpidの予想される動作です。2つのプロセスが同じ子を待っているとどうなりますか?

実行と復帰の両方を実行するか、状態の変化に気付いた競合状態ですか?

+1

どのように2つのプロセスが同じ子を持つことができますか? – Olaf

答えて

4

親プロセスのみwait()を実行でき、プロセスは親プロセスを1つしか持てません。

ただし、親プロセスには複数のスレッドが存在することがあります。同じ子を待っている複数のスレッドの場合、POSIXはそれらのうちの1つだけが状態の変化を見ることを指定します。複数のスレッドが状態の変化を見ることができるようにするには、WNOWAITフラグを指定してwaitid()を使用する必要があります。

POSIX: status information

+1

Nitpicking: "プロセスのために親プロセスだけ待つことができます。*"プロセスは待つことができますが、親プロセスだけが成功することができます。 – alk

関連する問題