pcntl_sigtimedwait
Description
The pcntl_sigtimedwait of PCNTL for PHP waits for signals, with a timeout.
Syntax
pcntl_sigtimedwait(
array $signals,
array &$info = [],
int $seconds = 0,
int $nanoseconds = 0
): int|falseParameters
signals
The array of signals to wait for.
info
Set to an array containing information about the signal.
| All | Description |
|---|---|
| signo | Signal number |
| errno | An error number |
| code | Signal code |
| SIGCHLD | Description |
|---|---|
| status | Exit value or signal |
| utime | User time consumed |
| stime | System time consumed |
| pid | Sending process ID |
| uid | Real user ID of sending process |
| SIGILL, SIGFPE, SIGSEGV, SIGBUS | Description |
|---|---|
| addr | Memory location which caused fault |
| SIGPOLL | Description |
|---|---|
| band | Band event |
| fd | File descriptor number |
seconds
Timeout in seconds.
nanoseconds
Timeout in nanoseconds.
Return
Returns a signal number on success, or false on failure.
Examples
1 · signals
<?
$signal = SIGHUP;
$mode = SIG_BLOCK;
$signals =
[
$signal
];
pcntl_sigprocmask($mode, $signals);
$process_id = posix_getpid();
posix_kill($process_id, $signal);
$return = pcntl_sigtimedwait($signals);
echo $return;
2 · info · all
<?
$signal = SIGHUP;
$mode = SIG_BLOCK;
$signals =
[
$signal
];
pcntl_sigprocmask($mode, $signals);
$process_id = posix_getpid();
posix_kill($process_id, $signal);
$return = pcntl_sigtimedwait($signals, $info);
echo $return . PHP_EOL;
print_r($info);
3 · info · SIGCHLD
<?
$signal = SIGCHLD;
$mode = SIG_BLOCK;
$signals =
[
$signal
];
pcntl_sigprocmask($mode, $signals);
$process_id = posix_getpid();
posix_kill($process_id, $signal);
$return = pcntl_sigtimedwait($signals, $info);
echo $return . PHP_EOL;
print_r($info);
4 · info · SIGILL
<?
$signal = SIGILL;
$mode = SIG_BLOCK;
$signals =
[
$signal
];
pcntl_sigprocmask($mode, $signals);
$process_id = posix_getpid();
posix_kill($process_id, $signal);
$return = pcntl_sigtimedwait($signals, $info);
echo $return . PHP_EOL;
print_r($info);
5 · info · SIGPOLL
<?
$signal = SIGPOLL;
$mode = SIG_BLOCK;
$signals =
[
$signal
];
pcntl_sigprocmask($mode, $signals);
$process_id = posix_getpid();
posix_kill($process_id, $signal);
$return = pcntl_sigtimedwait($signals, $info);
echo $return . PHP_EOL;
print_r($info);
6 · seconds
<?
$signal = SIGHUP;
$mode = SIG_BLOCK;
$signals =
[
$signal
];
pcntl_sigprocmask($mode, $signals);
$process_id = posix_getpid();
posix_kill($process_id, $signal);
$seconds = 1;
$return = pcntl_sigtimedwait($signals, $info, $seconds);
echo $return . PHP_EOL;
print_r($info);
1
Array
(
[signo] => 1
[errno] => 0
[code] => 0
)
7 · nanoseconds
<?
$signal = SIGHUP;
$mode = SIG_BLOCK;
$signals =
[
$signal
];
pcntl_sigprocmask($mode, $signals);
$process_id = posix_getpid();
posix_kill($process_id, $signal);
$seconds = 1;
$nanoseconds = 1;
$return = pcntl_sigtimedwait($signals, $info, $seconds, $nanoseconds);
echo $return . PHP_EOL;
print_r($info);
1
Array
(
[signo] => 1
[errno] => 0
[code] => 0
)
Links
Related
PCNTL
- pcntl_alarm
- pcntl_async_signals
- pcntl_errno
- pcntl_exec
- pcntl_fork
- pcntl_get_last_error
- pcntl_getpriority
- pcntl_rfork
- pcntl_setpriority
- pcntl_signal
- pcntl_signal_dispatch
- pcntl_signal_get_handler
- pcntl_sigprocmask
- pcntl_sigwaitinfo
- pcntl_strerror
- pcntl_unshare
- pcntl_wait
- pcntl_waitpid
- pcntl_wexitstatus
- pcntl_wifexited
- pcntl_wifsignaled
- pcntl_wifstopped
- pcntl_wstopsig
- pcntl_wtermsig