child_process 在 Windows 上启动的监控进程出现问题

Problems with monitoring processes launched by child_process spawn on Windows

我的目的只是使用 node.js 启动一个 exe。如果应用程序意外终止,则应捕获异常并将其记录在协议中。在 C++ 项目中通过以下语句抛出异常:

throw std::string("NOT X or x!!!");

我的Javascript是:

var spawn = require('child_process').spawn;
var cp = spawn(process.env.comspec, ['/c', 'myExcepTest.exe', '', '']);

// **doesn't work**
cp.on('uncaughtException', function(err){
    console.log("Caught exception: " + err);
});
cp.stderr.on('error', function(err) {
    console.log(err.toString());
});
cp.stdin.resume();
cp.stdin.setEncoding('utf8');
cp.stdin.on('data', function(data) {
    cp.stdout.write(data);
});

// **does work**
cp.on('exit', function(code){
    console.log("Child exited with code: " + code);
});
cp.stdout.on('data', function(data) {
    console.log(data.toString());
});

我的问题是:

  1. 使用 node.js 监视进程是否是一个好习惯 windows?

  2. 是否可以使用 node.js 捕获异常 windows?

  3. 如何在 node.js 中正确地将标准输入通过管道传输到标准输出 脚本?

抱歉我的英语不好 ;)

  1. 取决于你为什么要监视我想的过程。
  2. 子进程没有 uncaughtException。原因是没有标准的方法来捕捉这些东西,考虑到子进程可以是任何类型的程序。
  3. 您不能将子进程的 stdin 传送到它自己的 stdout,因为 stdin is a Writable stream 是子进程的输入(不是它的输出) , 所以 stdin 永远不会有 data 事件。