subprocess.on ("exit", () => {}) не работает, если нажать control- c уничтожить терминал вручную - PullRequest
0 голосов
/ 10 марта 2020

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

const subprocess = spawn("long-running server");

subprocess.on("exit", () => {
  console.log("Exiting....");
});

Если long-running server завершит свою задачу, будет выполнен обратный вызов exit.

Однако, если я вручную нажму control-c пока long-running server все еще работает, обратный вызов exit не будет выполнен.

Как мне выполнить обратный вызов exit, даже если пользователь вручную убил терминал?

1 Ответ

1 голос
/ 10 марта 2020

Попробуйте перехватить сигнал прерывания SIGINT

Сигнал SIGINT отправляется процессу его управляющим терминалом, когда пользователь желает прервать процесс. Обычно это инициируется нажатием Ctrl + C, но в некоторых системах можно использовать символ «удалить» или клавишу «разрыв». SIGINT - Википедия

subprocess.on("SIGINT", () => {
  console.log("Exiting....");
});
...