2017-10-10 10 views
2

리눅스에서 stdout을 통해 출력하는 이진 파일을 실행하려고합니다. 터미널에서 실행하면 아름다운 인쇄 스트림을 얻을 수 있습니다 (50ms마다 한 줄 가까이). child_process.spawn과 함께 nodeJS 스크립트에서 실행하면 데이터가 5 초마다 청크에 도착합니다. .child_process.spawn 청크가 들어오다

코드 :

const spawn = require('child_process').spawn; 


    // Run all node binaries 
for (let i = 0; i < config.dependencies.length; i++) { 

    // Get details on this binary 
    var repo = config.dependencies[i].name; 
    var version = config.dependencies[i].version; 
    console.log("Running: " + repo + ' version ' + version); 


    // Run this binary 
    node_process[i] = spawn('./'+repo+'/'+repo,[], {stdio: ['pipe', 'pipe', 'pipe']}) 

    node_process[i].stdout.on('data', function(data) { 

    stdout_data=config.dependencies[i].name+ ":"+data.toString(); 
    console.log("Stdout: " + stdout_data) 

}); 
} 

는 내가 표준 출력 실시간의 데이터를 인쇄 할 수있는 모든 설정이 생각 나는 예상대로이 작동하지 않는 이유에 매우 혼란 스러워요. 고마워요!

답변

0

알아 냈습니다! 생성시 다음 명령을 사용하십시오.

spawn('stdbuf', ['-i0', '-o0', '-e0', FilePath]) 

stdbuf를 사용하여 버퍼없이 생성합니다.