signal = $signal; }; foreach ($signals as $signal) { pcntl_signal($signal, $handler); } } /** * @param int[] $signals */ public function restoreSignalHandler(array $signals = self::SIGNALS): void { if (!function_exists('pcntl_signal')) { return; } foreach ($signals as $signal) { pcntl_signal($signal, SIG_DFL); } } public function isSignalCaught(): bool { if (!function_exists('pcntl_signal_dispatch')) { return false; } pcntl_signal_dispatch(); return null !== $this->signal; } /** * @throws SignalCaughtException */ public function throwExceptionIfSignalIsCaught(): void { if (!$this->isSignalCaught()) { return; } throw new SignalCaughtException($this->signal); } }