2017-10-10 50 views
2

我想在linux上運行一個二進制文件,通過stdout輸出。如果我從終端上運行它,我會得到一個美麗的數據流(每50毫秒接近一行),但是如果我使用child_process.spawn從nodeJS腳本運行它,則數據每5秒鐘左右以塊的形式到達。child_process.spawn stdout大塊進來

代碼片段:

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產生它沒有緩衝區。

相關問題