我在Windows上有一个NodeJS脚本,用于在子进程中调用可执行文件。我为此使用https://www.npmjs.com/package/cross-spawn。我的代码大致像
let spawn = require('cross-spawn');
child = spawn('path/to/executable', ['some args'], {
env: process.env
})
child.on('close', function (code) {
console.log(code);
// handle code result here
});
我正在调用的可执行文件应该以通过或失败的常规过程数字代码退出,但是在某些错误上,永远不会调用'close'事件;而是父脚本本身突然退出,所以我再也没有机会处理代码中的子错误。
退出后,如果我手动打印出过程代码,则使用
echo %errorlevel%
我得到“ 1”,并且我没有在代码中的任何地方设置它,所以它必须是孩子。该应用可能不是一个好的演员,但在与开发者联系之前,我需要弄清楚发生了什么。
我对流程模型没有特别深入的了解,但是我假设子流程始终旨在返回代码,并且不管代码如何退出,如果有代码,则将控制权返回给父流程。有没有一种方法可以硬退出进程,从而杀死整个树,包括父树?