簡體   English   中英

如何從 node.js 腳本獲取 process.stdio?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM