シグナルを待つ

# pcntl_sigwaitinfo

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

pcntl_sigwaitinfo — シグナルを待つ

### 説明

function pcntl_sigwaitinfo(array `$signals`, array `&$info` = []): int|false

pcntl_sigwaitinfo() は、 呼び出し元のスクリプトの実行をいったん停止させ、`signals` で指定したシグナルを受け取るまで待ちます。もしそのシグナルのいずれかがすでにペンディング状態 (pcntl_sigprocmask() でブロックされているなど) の場合、 pcntl_sigwaitinfo() は即時に結果を返します。

### パラメータ

`signals`

  待つシグナルの配列。

`info`

  シグナルについての情報を含む配列が `info` に設定されます。

  次の要素は、すべてのシグナルについて設定されます。

  - signo: シグナル番号
  - errno: エラー番号
  - code: シグナルコード

  次の要素は、`SIGCHLD` シグナルの場合に設定されます。

  - status: 終了値あるいはシグナル
  - utime: 使用したユーザー時間
  - stime: 使用したシステム時間
  - pid: 送信したプロセスの ID
  - uid: 送信したプロセスの実ユーザー ID

  次の要素は、`SIGILL`、 `SIGFPE`、`SIGSEGV` および `SIGBUS` シグナルの場合に設定されます。

  - addr: 問題が発生したメモリ上の場所

  次の要素は、`SIGPOLL` シグナルの場合に設定されます。

  - band: バンドイベント
  - fd: ファイル記述子番号

### 戻り値

成功した場合にシグナル番号を返します。 失敗した場合に `false` を返します

### 変更履歴

バージョン | 説明
--- | ---
8.4.0 | `signal` が空の場合、 ValueError をスローするようになりました。
8.4.0 | `signal` が int でない場合、 TypeError をスローするようになりました。
8.4.0 | `signal` が無効である場合、 ValueError をスローするようになりました。

### 例

例1 pcntl_sigwaitinfo() の例

    <?php
    echo "Blocking SIGHUP signal\n";
    pcntl_sigprocmask(SIG_BLOCK, array(SIGHUP));

    echo "Sending SIGHUP to self\n";
    posix_kill(posix_getpid(), SIGHUP);

    echo "Waiting for signals\n";
    $info = array();
    pcntl_sigwaitinfo(array(SIGHUP), $info);
    ?>

### 参考

- pcntl_sigprocmask() - ブロックされたシグナルを設定あるいは取得する
- pcntl_sigtimedwait() - タイムアウトつきでシグナルを待つ

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open