[英]How to get process.stdio from node.js script?
對不起,如果我的描述不夠充分,如果我需要,請告訴我。
我試圖讓一個 node.js 腳本在另一個 node.js 腳本上使用child_process.spawn()
。 我能夠成功執行它,但我無法從 stdin、stdout 和 stderr 以外的管道中檢索數據。
當我執行spawn()
命令時,我可以選擇訪問“stdio”,但是process
沒有該選項。 process.stdio
未定義。
當我spawn()
一個 ffmpeg 進程時,我可以輕松地從超過 3 個默認管道中獲取數據。
所以,我的問題是:如何從常規 node.js 腳本訪問更多管道?
本質上,我想訪問諸如process.stdio[1]
而不是process.stdout
類的東西,因為這樣我就可以使用process.stdio
的數字遠高於2
。
任何幫助表示贊賞,謝謝
根據子進程文檔和這個 SO 問題,您可以通過創建一個寫入流到{ fd: 3 }
來做到這一點:
在家長:
const opts = {
stdio: ['pipe', 'pipe', 'pipe', 'pipe']
};
const child = child_process.spawn('node', ['./child.js'], opts);
//read data
child.stdio[3].pipe(myHandler);
//or
child.stdio[3].on('data', data => {
//handle data
});
關於孩子:
const writeStream = fs.createWriteStream(null, {fd: 3});
dataStream.pipe(writeStream);
//or write data chunks directly
writeStream.write(data);
這是未經測試的,但應該可以正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.