pcntl_sigwaitinfo

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

pcntl_sigwaitinfoシグナルを待つ

説明

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

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

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

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

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

戻り値

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

例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);
?>

参考

add a note add a note

User Contributed Notes 1 note

up
0
dave at mudsite dot com
8 years ago
This function is not available on platforms that do not implement the underlying C function.  Included in this would be MaxOS[1], and FreeBSD[2]

[1] : http://opensource.apple.com//source/xnu/xnu-1456.1.26/bsd/sys/signal.h

[2] : http://fxr.watson.org/fxr/source/sys/signal.h?v=FREEBSD11
To Top