Как игнорировать SIGINT, когда я выполняю execSyn c в узле, а затем команду- c? - PullRequest
0 голосов
/ 01 марта 2020

Я хочу очистить свой временный файл, когда люди control-c (закрывают текущий скрипт cli).

У меня есть две опции библиотеки:

  1. https://www.npmjs.com/package/exit-hook
  2. https://www.npmjs.com/package/tmp

Оба сталкиваются с одной и той же проблемой, например, exit-hook.

Проблема в том, что я должен execSync что-то в моем скрипте, например:

const { execSync } = require("child_process");

execSync(`spawn some server`, {
  // the server watch for something
  stdio: "inherit"
});

exitHook(() => {
  fs.removeSync("clear some file");
});

Если я запустил вышеупомянутый скрипт, сервер запустится и stdio распечатает хорошо, но когда я нажму control-c, он покажет что-то вроде this

child_process.js:650
    throw err;
    ^

Error: Command failed: spawn some server
...
    at Module._compile (internal/modules/cjs/loader.js:1151:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
    at Module.load (internal/modules/cjs/loader.js:1000:32)
    at Function.Module._load (internal/modules/cjs/loader.js:899:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
    at internal/main/run_main_module.js:17:47 {
  status: null,
  signal: 'SIGINT',
  output: [ null, null, null ],
  pid: 42680,
  stdout: null,
  stderr: null
}
^C

Как заставить execSync игнорировать SIGINT, или как мне решить эту проблему?

...