2014-05-11 5 views
3

node.js를 사용하여 C++에서 컴파일 된 파일을 실행하고이 파일에서 값을 가져와야합니다. child_process.execFile을 사용하려고했지만 아무런 문제가 없습니다. 이것은 내가 사용하는 기능입니다 :노드 js child_process.execFile return

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; 
      }); 
} 

문제는 "CONSOLE.LOG"의 wRet은 "반환"에, 다시 파일 c + +에서 나 텍스트가 포함되어 있다는 것입니다 정의되지 않은 남아있다.

도와 주시겠습니까?

감사합니다.

+0

'wRet'있을 수 있습니다를 돌려주는? –

+0

죄송합니다, 쓰기 오류 xD – Hikari

+0

wRet이 정의되지 않았 음을 어떻게 확인합니까? 'execFile'이 비동기 함수라는 것을 알고 있습니까? –

답변

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` 
}); 
+0

고맙습니다! 그것은 작동합니다! – Hikari