如果我child_process.exec('mycommand', { timeout: 5000 }, callback)
,我不知道由此产生的错误是由超时还是其他原因引起的。有没有办法确定失败是否是由传递给child_process
的{ timeout: 5000 }
选项引起的?
只有一种方法可能不太可靠。
因此,当您将其用于满足您的需求时要小心
工作原理:
- 当超时被触发时,父进程会发出默认的
SIGTERM
信号,除非您在选项 {killSignal : 'SIGINT'} 中覆盖 - 退出子进程后,通过将
err.code
填充到null
并err.signal
填充SIGTERM
或任何内容来调用父进程的回调cb(err,stdout,stderr)
因此,您可以在回调中检查err.signal
。同样,这不太可靠,因为您可以从任务管理器或使用 shell 的 kill 命令杀死子进程。