1
0
mirror of https://github.com/danog/process.git synced 2024-11-29 20:29:16 +01:00

Send signals to child process instead of wrapper

This commit is contained in:
Aaron Piotrowski 2019-02-26 09:44:39 -06:00
parent ab53d92776
commit d51bd9a487
No known key found for this signature in database
GPG Key ID: ADD1EF783EDE9EEB
2 changed files with 18 additions and 4 deletions

View File

@ -204,10 +204,13 @@ final class Runner implements ProcessRunner
/** @inheritdoc */
public function signal(ProcessHandle $handle, int $signo)
{
/** @var Handle $handle */
if (!\proc_terminate($handle->proc, $signo)) {
throw new ProcessException("Sending signal to process failed");
}
$handle->pidDeferred->promise()->onResolve(function ($error, $pid) use ($signo) {
if ($error) {
return;
}
@\posix_kill($pid, $signo);
});
}
/** @inheritdoc */

View File

@ -375,6 +375,17 @@ class ProcessTest extends TestCase
});
}
public function testSignal()
{
Loop::run(function () {
$process = new Process(["php", __DIR__ . "/bin/signal-process.php"]);
yield $process->start();
yield new Delayed(100); // Give process time to set up single handler.
$process->signal(\SIGTERM);
$this->assertSame(42, yield $process->join());
});
}
public function testDebugInfo()
{
Loop::run(function () {