如何确定nodejs child_process是否因超时而失败?

时间:2017-01-23 16:15:21

标签: javascript node.js timeout child-process

如果我child_process.exec('mycommand', { timeout: 5000 }, callback),我不知道产生的错误是由超时还是其他原因引起的。有没有办法确定失败是否是由传递给{ timeout: 5000 }的{​​{1}}选项引起的?

1 个答案:

答案 0 :(得分:1)

只有一种可能不太可靠的方式。
因此,当您根据自己的需要使用它时要小心

工作原理:

  1. 触发超时后,父进程会发出默认的SIGTERM信号,除非您在选项{killSignal:' SIGINT'}
  2. 中覆盖
  3. 退出子流程后,通过将cb(err,stdout,stderr)填充到err.codenull填充到err.signal来调用父流程的回拨SIGTERM或者不管它是什么
  4. 因此,您可以在回调中检查err.signal。再次这不太可靠,因为你可以从任务管理器或使用shell的kill命令杀死子进程。