Node.js检测子进程退出

ede*_*bin 6 exit child-process node.js

我在节点工作,因为它通过视觉工作室代码扩展发生.我成功创建子进程,并可以命令终止它们.我希望在进程意外退出时运行代码,这似乎是"退出"事件的目的,但我不知道如何调用它,这是我正在使用的代码,进程运行,但是没有检测到/登录退出,请注意output.append是visual studio的特定版本的console.log():

        child = exec('mycommand', {cwd: path}, 
        function (error, stdout, stderr) { 
            output.append('stdout: ' + stdout);
            output.append('stderr: ' + stderr);
            if (error !== null) {
                output.append('exec error: ' + error);
            }
        });

        child.stdout.on('data', function(data) {
            output.append(data.toString()); 
        });
Run Code Online (Sandbox Code Playgroud)

这里有四件我尝试过的东西不能用于登录退出:

        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");
        });
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 7

查看子进程模块node.js源代码,该.exec()方法本身就是这样做的:

child.addListener('close', exithandler);
child.addListener('error', errorhandler);
Run Code Online (Sandbox Code Playgroud)

并且,我认为.on()是一个捷径.addListener(),所以你也可以这样做:

child.on('close', exithandler);
child.on('error', errorhandler);
Run Code Online (Sandbox Code Playgroud)