节点js child_process.execFile返回

时间:2014-05-11 08:23:50

标签: javascript node.js execfile

我需要使用node.js在C ++中运行一个已编译的文件,并从该文件中返回一个值。 我试过使用child_process.execFile,但我没有问题。 这是我使用的功能:

var exec = require('child_process');
Test.prototype.write = function (m) {
var wRet;
exec.execFile ('./mainCmd', ['-o', '\\!' + m + '.']
            function (error, stdout, stderr) {
              wRet = stdout;
              console.log ("wRet" + wRet);
              return wRet;
            });
}

问题是wRet在" console.log"包含文本我从文件c + +返回,在"返回"仍未定义。

你能帮忙吗?

谢谢大家!

1 个答案:

答案 0 :(得分:2)

您必须将回调传递给test()函数:

var chproc = require('child_process');
Test.prototype.write = function(m, cb) {
  chproc.execFile(
    './mainCmd',
    ['-o', '\\!' + m + '.'],
    function(error, stdout, stderr) {
      if (error) return cb(error);
      cb(null, stdout);
    }
  );
};


// usage ...
var t = new Test();
t.write('foo', function(err, result) {
  if (err) throw err;
  // use `result`
});