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
): boolParameters
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
): voidsigno
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