2012-06-29 2 views
3

자식 프로세스의 출력을 캡처하여 websocket을 통해 보내려고하지만 on.(data, callback) 이벤트를 캡처하는 데 문제가 있습니다.childprocess.stdout.on ('data', callback) not firing

var subscriberProc = spawn('./stdoutsub', 
         ['mytopic', '--clientid', 'node-dispatcher'], 
         {cwd: '/Users/oskar/projects/others/rsmb_1/mac/'}); 

subscriberProc.stdout.on('data', function(data) { 
    console.log('-> "' + data + '"'); 
    wsServer.send(data); 
}); 

다음으로 변경하면 stdoutsub 프로세스가 노드 프로세스 stdout에 예상 데이터를 인쇄합니다.

var subscriberProc = spawn('./stdoutsub', 
         ['mytopic', '--clientid', 'node-dispatcher'], 
         {cwd: '/Users/oskar/projects/others/rsmb_1/mac/', 
         stdio: 'inherit'}); 

OSX에서 노드 버전 0.8.1을 실행 중입니다.

여기에 누락 된 항목이 있습니까?

답변

0

필자는 유사한 문제 (일부 경우 출력이 누락 된 부분)가있어 듣기 시작할 기회가 생기기 전에 생성 된 프로세스가 출력을 분출하고 있다고 결론을 냈습니다.

var fs = require('fs'), 
    spawn = require('child_process').spawn, 
    out = fs.openSync('./out.log', 'a'), 
    err = fs.openSync('./out.log', 'a'); 

var child = spawn('prg', [], { 
    detached: true, 
    stdio: [ 'ignore', out, err ] 
}); 

을 그리고 나는 out.log 읽고 지금까지 일들이 나를 위해 잘 밖으로 일한 :

나는 Node.js를 문서에서 다음과 유사한 코드를 사용하여 그것을 해결.