waitpidシステムコールがサブプロセスでのみ使用できるのはなぜですか?

waitpidシステムコールがサブプロセスでのみ使用できるのはなぜですか?

マニュアルページには、wait(2)指定されたプロセスが呼び出しプロセスの子プロセスでない場合、waitpidシステムコールがエラーを返すことが示されています。ECHILDなぜこれですか?子以外のプロセスを待つと、セキュリティの問題の種類が発生しますか?サブプロセスではなく待機を実装するのが難しいか不可能な技術的な理由はありますか?

ベストアンサー1

仕組みが原因ですwaitpid。 POSIXシステムでは、親プロセスの子プロセスが終了すると信号(SIGCHLD)が渡されます。高レベルでwaitpid実行されるすべての操作は、指定されたプロセス(またはプロセスの1つ)に対してSIGCHLD信号が転送されるまでブロックされます。 SIGCHLD信号は決して転送されないため、任意のプロセスを待つことはできません。

おすすめ記事