дочерний_процесс spawn должен контролировать- c два раза для выхода при использовании exit-hook (process.on ('SIGTERM')) - PullRequest
0 голосов
/ 04 марта 2020

У меня есть такая программа

const { spawn } = require("child_process");
const exitHook = require("exit-hook");

exitHook(() => {
  console.log("Leaving");
});

spawn("my-program", ["my-args"], {
  stdio: "inherit"
}); // Long running server

Теперь, когда я нажимаю control-c на моей Ma c, мой терминал показывает

Leaving
# Now, my terminal cursor is here, still now leaving the terminal

Мой курсор терминала висит там Мне нужно один раз нажать control-c, чтобы фактически покинуть терминал.

Leaving
^C

Теперь я ушел, почему это происходит?

Я знаю, что exitHook использует process.on('SIGTERM') и SIGINT для внутреннего использования.

Как я могу решить это? Как я могу нажать control-c только один раз, чтобы выйти?

Это произошло только тогда, когда я использую child_process spawn.

1 Ответ

0 голосов
/ 04 марта 2020

Попробуйте выйти из основного процесса вручную или завершить дочерний процесс

exitHook(() => {
  console.log("Leaving");
  process.exit() 
  // or, 
  cp.exit()
});
const cp = spawn("my-program", ["my-args"], {
  stdio: "inherit"
}); // Long running server
...