我想在Windows中讀取一些使用nodejs進程的stdout。Nodejs讀取某些進程的stdout並執行某些操作
到目前爲止,我得到這個:
我模擬輸出的過程與:
ping -t google.com > ping.txt
的平輸出在ping.txt文件轉儲。 該節點在節點中觀察變化。
所以,在我的NodeJS得到這個代碼:
var filename = 'ping.txt';
var fs = require("fs");
fs.watch(filename, function (event, filename) {
if (event == 'change') {
console.log('change', filename);
fs.stat(filename, function (err, stats) {
console.log('size ', stats.size);
if(stats.size > 500){
fs.truncate(filename,10,function(){
console.log("truncated");
});
}
})
}
});
但是,這是我的輸出的NodeJS:
size 0
change ping.txt
size 192
change ping.txt
size 253
change ping.txt
size 375
change ping.txt
size 436
change ping.txt
size 559
truncated
change ping.txt
size 620
truncated
change ping.txt
size 743
truncated
change ping.txt
size 804
truncated
change ping.txt
size 926
truncated
文件永遠不會被截斷。
我不想獲得巨大的文件大小,因爲真實的過程獲得了大量的輸出。
所以這是試圖讓文件被截斷的主要原因。
但它不工作。
任何人都可以幫我一把嗎?這是我的第一個nodejs實驗。
後來我打算輸出stdout進程發生websocket,但現在我被這個問題困住了。
在此先感謝!最好的祝福!
編輯1: ping的過程是不是我想要讀的真正的。真正的過程是一個加密礦工。而且它非常耗資源。這是因爲我接受了這個問題。將過程輸出轉儲到一個文件中,並用另一個過程讀取它。 我不是100%樂意讓nodej管理這個cryptocoin進程,因爲我不知道node是否可以處理它。
如果有更好的方法來做到這一點,我很高興聽到它。謝謝!
的'ping'進程的命令有沒有告訴你已經的方式截斷該文件,所以它會繼續寫入它認爲該文件應該結束的位置。你不能那樣做。當然,node.js有一個內置的管理孩子標準輸出的機制? –
感謝哈利,就像我在下面的評論中所說的那樣,真正的過程是一個加密金礦礦工。而且資源非常昂貴。我不知道nodejs是否可以管理它。我不想依賴它。 這就是讓我去思考這個問題,將輸出轉儲到一個文件並用另一個進程讀取它的原因。你認爲這是一個更好的方法嗎?或者使用更好的語言?提前致謝! – nicomonjelat
爲什麼它會如何影響孩子的資源密集?所有父級進程所要做的就是處理輸出,對吧? –