(PHP 8 >= 8.4.0)
pcntl_waitid — 子プロセスの状態変化を待つ
$idtype = P_ALL,$id = null,&$info = [],$flags = WEXITED,&$resource_usage = []呼び出し元の子プロセスにおける 終了、停止、 および/または 継続イベントに関連するステータス情報を取得します。
   WNOHANG フラグを渡さない限り、
   呼び出し元のプロセスはエラーが発生するか、
   以下を全て満たすステータス情報が利用できるようになるまでブロックします。
   
idtype と id
      で指定された一連の子プロセスのうちの、
      いずれかの子プロセスのステータス情報であること
     
    flags で設定した状態変化フラグのひとつにマッチすること
     
    マッチしたステータス情報が、pcntl_waitid() の呼び出し前に利用可能になった場合、 呼び出しは直ぐに返ります。 マッチしたステータス情報がふたつ以上の子プロセスで利用可能になった場合、 それらのステータスの順番は不定です。
注意:
このドキュメントは
waitid関数の POSIX 仕様を満たしていますし、 Linux, NetBSD, FreeBSD に特有の追加パラメータもいくつか満たしています。 システムでwaitidがどのように動作するかの詳細は、 システムのwaitid(2)のマニュアルを参照ください。
idtypeididtype と id は、
      どの子プロセスを待つのかを指定するのに使います。
     
     | idtypeがP_ALLの場合 | 全ての子プロセスを待ちます。 idは無視されます。 | 
| idtypeがP_PIDの場合 | プロセスID が idに等しい子プロセスを待ちます。 | 
| idtypeがP_PGIDの場合 | プロセスグループID が idに等しいすべての子プロセスを待ちます。 | 
| idtypeがP_PIDFDの場合(Linux 5.4 以降) | idで指定した
          PID ファイルディスクリプタで参照している子プロセスを待ちます。
          (PID ファイルディスクリプタに関する詳しい情報は、
          Linux のpidfd_open(2)man ページを参照ください) | 
| idtypeがP_UIDの場合 | 実効ユーザーID が idに等しいプロセスを待ちます。 | 
| idtypeがP_GIDの場合 | 実効グループID が idに等しいプロセスを待ちます。 | 
| idtypeがP_SIDの場合 | セッションID が idに等しいプロセスを待ちます。
          子プロセスが自分自身のセッションを開始していた場合、
          そのセッションIDはプロセスIDと等しくなります。
          そうでない場合、子プロセスのセッションIDは、
          呼び出し側のセッションIDとマッチします。 | 
| idtypeがP_JAILIDの場合 | jail の識別子が idに等しい
          jail 中のプロセスを待ちます。 | 
info
      info には、
      シグナルに関する情報を含めた情報を設定します。
     
      info 配列には、以下のキーが含まれています:
      
signo: Signal numbererrno: System error numbercode: Signal codestatus: Exit value or signalpid: Sending process IDuid: Real user ID of sending processutime: User time consumedstime: System time consumedflags
      flags は、以下の定数を0個以上 OR で結んだ値です。 
      
| WCONTINUED | 以下にあてはまる任意の子プロセスについて、その状態が返されます:
           ジョブの制御停止から動作が継続して以降、
           そのステータスが報告されていないか、
           pcntl_waitid() を WNOWAITフラグ付きで呼び出したことによってのみステータスが報告された子プロセス。 | 
| WEXITED | 終了したプロセスを待つ | 
| WNOHANG | ステータスが利用可能でない場合でもハングしない。 つまり、すぐに制御を戻します。 | 
| WNOWAIT | infoで返されたプロセスの状態が
           waitable な状態であってもそのままにする。
           これはプロセスの状態に影響しません。つまり、
           この関数呼び出しが完了した後、
           プロセスを再度待つことができるということです。 | 
| WSTOPPED | シグナルを受け取って停止した子プロセスについて、
           そのステータスが報告されていないか、
           pcntl_waitid() を WNOWAITフラグ付きで呼び出したことによってのみに報告された場合、
           その子プロセスの状態が返されます。 | 
resource_usage
      resource_usage には、
      子プロセスからリソース利用状況の統計を含めた配列を設定します。
      この情報は、(FreeBSD のように)wait6 システムコールが利用可能な場合か、
      生の waitid システムコールを利用できる Linux でサポートされています。
     
   WNOHANG が指定されており、
   かつ idtype と id
   で指定された任意のプロセスでステータスが利用できない場合
   pcntl_waitid() は true を返します。
  
   子プロセスのうちのひとつで、
   状態が変化した場合、
   pcntl_waitid() は true を返します。
  
   上記以外の場合、false が返され、
   エラー番号 errno を取得するために
   pcntl_get_last_error() が使えます。
  
注意:
エラー番号
errnoが取得できた場合、 それに関連付けられたテキストメッセージを取得するために pcntl_strerror() が使えます。
| ECHILD | 呼び出し側のプロセスには、待っていない子プロセスはありません。 | 
| EINTR | pcntl_waitid() がシグナルで割り込まれました。 | 
| EINVAL | flagsに不正な値が指定されたか、idtypeとidで不正なプロセスのセットを指定しました。 | 
| バージョン | 説明 | 
|---|---|
| 8.5.0 | resource_usageが追加されました。 | 
