Browse Source

Fix CTRL+C handling during create-project

Nicolas Grekas 7 years ago
parent
commit
251a347efb
1 changed files with 10 additions and 7 deletions
  1. 10 7
      src/Composer/Command/CreateProjectCommand.php

+ 10 - 7
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('<info>Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')</info>');