在Windows

时间:2015-09-15 19:59:56

标签: c++ node.js windows exception performance-testing

Mein的目的只是使用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监控进程是一种好习惯     视窗?

  2. 是否可以使用node.js来捕获异常     视窗?

  3. 如何正确地将stdin传递给node.js中的stdout     脚本?

  4. 抱歉我的英语不好;)

1 个答案:

答案 0 :(得分:0)

  1. 取决于您为什么要监控我想要的流程。
  2. 子进程没有uncaughtException。原因是,没有标准的方法可以捕获这些东西,考虑到子进程可以是任何类型的程序。
  3. 您无法将子进程的stdin传递给自己的stdout,因为stdin is a Writable stream并且是子进程的输入(不是它的输出) ,因此stdin永远不会有data个事件。