我正在嘗試寫一個代表我的項目中的其他腳本代理的小命令腳本,我試圖使用節點將stdout從派生進程管道傳輸到當前進程的stdout:增加nodejs管道的最大字節大小
function runCommand(command, arguments) {
var commandProcess = childProcess.spawn(command, arguments);
commandProcess.stdout.pipe(process.stdout);
commandProcess.on("exit", process.exit);
}
,直到我開始得到從我的子進程的大輸出這工作正常(例如其中之一是Maven的命令)。我所看到的只是輸出標準輸出的前8192個字節,然後將剩下的內容存儲到下一個「數據」事件中。然後打印出下一個8192等。這意味着輸出存在滯後,並且有時在我們運行服務器進程時,有時它會停止打印出來,直到您觸發服務器上觸發另一個「數據」事件的事件。
有沒有辦法增加這個緩衝區的大小或避免這種行爲?理想情況下,這個指揮官腳本只是代理我們的其他腳本,並應按原樣打印所有內容。
謝謝!我會看看這是否適用於我所需要的。我之所以沒有嘗試這個原因是因爲大量的數據被打印到'stdout'。理想情況下,我希望緩衝區大小爲'無限',並且只需打印輸出內容即可,我認爲這是'.pipe'的功能。 –
實際上我們不能使用'exec',因爲這是一個服務器命令(即一個進程在你手動告訴它之前不會退出),我們實際上希望它是異步異步的。它看起來像'spawned'進程有一個8192字節的硬編碼限制,我需要解決這個問題。 –