Node.js检测子进程退出

Node.js检测子进程退出,node.js,exit,child-process,Node.js,Exit,Child Process,我在node中工作,这是通过visualstudio代码扩展实现的。我成功地创建了子进程,并且可以根据命令终止它们。我希望在进程意外退出时运行代码,这似乎是“退出”事件的目的,但我不清楚如何调用它,这是我正在使用的代码,进程运行,但在退出时未检测到/登录,请注意output.append是console.log()的visual studio代码特定版本: 以下是我尝试过的四件在登录退出时不起作用的事情: child.process.on('exit', function(cod

我在node中工作,这是通过visualstudio代码扩展实现的。我成功地创建了子进程,并且可以根据命令终止它们。我希望在进程意外退出时运行代码,这似乎是“退出”事件的目的,但我不清楚如何调用它,这是我正在使用的代码,进程运行,但在退出时未检测到/登录,请注意output.append是console.log()的visual studio代码特定版本:

以下是我尝试过的四件在登录退出时不起作用的事情:

        child.process.on('exit', function(code) {
            output.append("Detected Crash");
        });

        child.on('exit', function(code) {
            output.append("Detected Crash");
        });

        child.stdout.on('exit', function () {
            output.append("Detected Crash");
        });

        child.stderr.on('exit', function () {
            output.append("Detected Crash");
        });
查看,
.exec()
方法本身就是这样做的:

child.addListener('close', exithandler);
child.addListener('error', errorhandler);
而且,我认为
.on()
.addListener()
的快捷方式,因此您还可以执行以下操作:

child.on('close', exithandler);
child.on('error', errorhandler);

您正在运行哪个版本的node.js?这是正确的,子进程结束时,子进程('close',exithandler)会调用。现在我有另一个问题。我的子进程产生了更多的进程,我可以强制杀死子进程和关联的子进程,但我还想做的是在它产生的子进程失败/关闭时杀死顶级子进程。问题是我不执行child进程的子进程,因此在节点中没有引用,它们是由CLI工具自动启动的(在我的示例中,mycommand是一个已安装的CLI工具)。“你知道我该如何解决这个问题吗?”伊登科尔宾-很高兴我们解决了你的第一个问题。使用node.js的一个好处是,您可以随时查看源代码。我发现node.js文档有点缺乏,因此源代码对于回答这样的问题非常方便。对于您的附加问题,我建议您创建一个新问题的良好描述,并为该问题打开一个新问题,因为它几乎是一个新问题。好的,根据我的评论创建一个新问题:当退出处理程序和错误处理程序是同一个函数时,这可能会产生意外的副作用。在这种情况下,它可能会被调用两次。@JeroenBollen-在我的回答中,我在哪里建议退出和关闭处理程序应该是同一个函数?
child.on('close', exithandler);
child.on('error', errorhandler);