Как определить, произошел ли сбой nodejs child_process из-за тайм-аута?

Если я сделаю child_process.exec('mycommand', { timeout: 5000 }, callback)Я не знаю, была ли ошибка вызвана таймаутом или какой-либо другой причиной. Есть ли способ определить, был ли сбой вызван { timeout: 5000 } опция передана child_process?

1 ответ

Есть только один способ, который может быть не совсем надежным.
Так что будьте осторожны, когда используете его для своих нужд

Как это устроено:

  1. Когда срабатывает тайм-аут, родительский процесс отправляет значение по умолчанию SIGTERM сигнал, если вы не переопределите в параметрах {killSignal: 'SIGINT'}
  2. После выхода из дочернего процесса обратный вызов родительского процесса cb(err,stdout,stderr) называется населением err.code в null а также err.signal в SIGTERM или что бы то ни было

Так что вы можете проверить err.signal в обратном вызове. И опять же, это не совсем надежно, поскольку вы можете убить дочерний процесс из диспетчера задач или с помощью команды kill оболочки.

Другие вопросы по тегам