pcntl_signal
Description
The pcntl_signal of PCNTL for PHP installs a signal handler.
Syntax
pcntl_signal( int $signal, callable|int $handler, bool $restart_syscalls = true ): bool
Parameters
signal
The signal number.
handler
The signal handler. This may be either of the two global constants: SIG_DFL or SIG_IGN, which will restore the default signal handler or ignore the signal, respectively; or a callable, which will be invoked to handle the signal.
If a callable is given, it must implement the following signature:
handler( int $signo, mixed $siginfo ): void
signo
The signal being handled.
siginfo
If operating systems supports siginfo_t structures, this will be an array of signal information dependent on the signal.
NOTE: Note that when you set a handler to an object method, that object's reference count is increased which makes it persist until you either change the handler to something else, or your script ends.
restart_syscalls
Specifies whether system call restarting should be used when this signal arrives.
Return
Returns true on success or false on failure.
Examples
1 · signal handler · SIG_DFL
<? $signal = SIGHUP; $handler = SIG_DFL; $return = pcntl_signal($signal, $handler); var_export($return);
true
2 · signal handler · SIG_IGN
<? $signal = SIGHUP; $handler = SIG_IGN; $return = pcntl_signal($signal, $handler); var_export($return);
true
3 · signal handler · callable
<? function handler($signo, $siginfo) { echo PHP_EOL . $signo . PHP_EOL; print_r($siginfo); } $signal = SIGHUP; $handler = "handler"; $return = pcntl_signal($signal, $handler); var_export($return); $process_id = posix_getpid(); posix_kill($process_id, $signal); pcntl_signal_dispatch();
true 1 Array ( [signo] => 1 [errno] => 0 [code] => 0 )
4 · restart_syscalls · false
<? function handler($signo, $siginfo) { echo PHP_EOL . $signo . PHP_EOL; print_r($siginfo); } $signal = SIGHUP; $handler = "handler"; $restart_syscalls = false; $return = pcntl_signal($signal, $handler, $restart_syscalls); var_export($return); $process_id = posix_getpid(); posix_kill($process_id, $signal); pcntl_signal_dispatch();
true 1 Array ( [signo] => 1 [errno] => 0 [code] => 0 )
5 · restart_syscalls · true
<? function handler($signo, $siginfo) { echo PHP_EOL . $signo . PHP_EOL; print_r($siginfo); } $signal = SIGHUP; $handler = "handler"; $restart_syscalls = true; $return = pcntl_signal($signal, $handler, $restart_syscalls); var_export($return); $process_id = posix_getpid(); posix_kill($process_id, $signal); pcntl_signal_dispatch();
true 1 Array ( [signo] => 1 [errno] => 0 [code] => 0 )
Links
PCNTL
- pcntl_alarm
- pcntl_async_signals
- pcntl_errno
- pcntl_exec
- pcntl_fork
- pcntl_get_last_error
- pcntl_getpriority
- pcntl_rfork
- pcntl_setpriority
- pcntl_signal_dispatch
- pcntl_signal_get_handler
- pcntl_sigprocmask
- pcntl_sigtimedwait
- pcntl_sigwaitinfo
- pcntl_strerror
- pcntl_unshare
- pcntl_wait
- pcntl_waitpid
- pcntl_wexitstatus
- pcntl_wifexited
- pcntl_wifsignaled
- pcntl_wifstopped
- pcntl_wstopsig
- pcntl_wtermsig