如何检查NodeJS中是否成功创建子进程

时间:2017-02-03 11:09:35

标签: javascript node.js child-process

我尝试使用Node JS child_process打开文件,如下所示

var child_process =require('child_process');
var spawn = child_process.spawn;
var exePath='<exe's path>'
var filePath='<file path>'
var childProcess = spawn(exePath, [filePath]); 
childProcess.stdout.on('data', (res) => {
            console.log('in spawn data');
            console.log(res);
})
childProcess.stderr.on('data', (err) => {
            throw err;
});

这里的问题是我的文件正在指定的exe中正确打开..但回调永远不会被调用...我猜测它是因为在打开文件后exe没有返回任何输出它只是打开文件。

此外,如果文件名中有任何错误,则错误回调也不会触发

问题

  1. 我怎么知道这个过程是成功创建的。
  2. 是否有任何事件可以让我知道成功的创作 这个孩子的过程。
  3. 为什么错误时不会触发错误回调。

1 个答案:

答案 0 :(得分:0)

正如@JuanPicado在评论中所说,要检查子进程是否正确生成,可以检查其PID。这是一个示例:

import child_process from 'child_process';
const subprocess = child_process.spawn("grep");
if(typeof subprocess.pid !== "number")
    throw new ErrorError: Failed to spawn subprocess.");
console.log("Spawned subprocess correctly!");

根据我的观察,如果未正确产生子进程,则subprocess.pid将是undefined。通过更改进程名称以包含拼写错误进行测试,以进行测试。