From 251a347efbae4dbedb5c45f1571265e0a8705230 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Fri, 5 Jan 2018 17:18:42 +0100 Subject: [PATCH] Fix CTRL+C handling during create-project --- src/Composer/Command/CreateProjectCommand.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/Composer/Command/CreateProjectCommand.php b/src/Composer/Command/CreateProjectCommand.php index 4f58a4a77..16960ac64 100644 --- a/src/Composer/Command/CreateProjectCommand.php +++ b/src/Composer/Command/CreateProjectCommand.php @@ -319,13 +319,16 @@ EOT } // handler Ctrl+C for unix-like systems - if (function_exists('pcntl_signal')) { - declare(ticks=100); - pcntl_signal(SIGINT, function () use ($directory) { - $fs = new Filesystem(); - $fs->removeDirectory($directory); - exit(130); - }); + if (function_exists('pcntl_async_signals')) { + @mkdir($directory, 0777, true); + if ($realDir = realpath($directory)) { + pcntl_async_signals(true); + pcntl_signal(SIGINT, function () use ($realDir) { + $fs = new Filesystem(); + $fs->removeDirectory($realDir); + exit(130); + }); + } } $io->writeError('Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')');