php-ipc/src/Signal/Signal.php

41 lines
750 B
PHP

<?php
namespace NoccyLabs\Ipc\Signal;
class Signal
{
private $signo;
/**
* Constructor
*
* @param integer $signo
*/
public function __construct(int $signo)
{
$this->signo = $signo;
}
/**
* Set a signal handler, overwriting any previous handler
*
* @param callable $handler
* @return void
*/
public function setHandler(callable $handler):void
{
pcntl_signal($this->signo, $handler);
}
/**
* Dispatch the signal to the specified pid. Default is own pid
*
* @param int $pid
* @return boolean
*/
public function dispatch(int $pid=null):bool
{
return posix_kill($pid?:posix_getpid(), $this->signo);
}
}