在Windows上使用NodeJS(Electron),我試圖捕獲一個生成的Perl子行程的stdout和stderr輸出。 我得到的stderr輸出是實時的,但stdout我只在子行程(Perl)終止后得到。我看了很多建議的解決方案,但都沒有成功。似乎stderr在子行程終止之前不會產生一個 "資料 "事件(至少在我有這么多輸出的時候)。
問題是出在 Perl 還是 JS 方面?有什么解決方案嗎?(我對JS很陌生。)
spawn(/span>)
{
const asLibs = [];
this._aLibs.forEach( (sLib) => /span>{ asLibs. push("-I", sLib); }. );
const child = cp.spawn(
this._path_perl。
[ ...asLibs, `-m${this. _module}, '-e', `${this. _module}::${this._module_fn}()`, ] 。);
child.stdout。 on('data', (data) => { console. log('stdout: ' data); }) 。
child.stderr。 on('data', (data) => { console. log('stderr: ' data); });
}
uj5u.com熱心網友回復:
和大多數程式一樣,如果沒有連接到終端,Perl對STDOUT使用塊緩沖。你可以欺騙孩子,讓他以為自己連接到了終端(例如使用unbuffer工具),這將導致它行緩沖,或者你可以改變Perl程式來自動重繪 其STDOUT(例如使用$| = 1;)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311366.html
標籤:
