Windowsのnodejsでいくつかのプロセスのいくつかのstdoutを読みたいと思います。Nodejsはいくつかのプロセスのstdoutを読み込んで処理します
は、これまでのところ、私はこれを得た:
私は、プロセスの出力をシミュレートします。ping出力はping.txtファイルにダンプされ
ping -t google.com > 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
ファイル切り詰めれることは決してありません。
実際のプロセスでは大量の出力が得られているので、大量のファイルサイズを取得したくありません。
これは、ファイルを切り詰めようとする主な理由です。
しかし、動作していません。
誰も私に手を差し伸べることはできますか?これは私の最初のノード実験です。
後で私はこのstdoutプロセスをwebsocketに出力することを計画していますが、今ではこの問題に悩まされています。
ありがとうございます!宜しくお願いします!
編集1: pingプロセスは、私が読もうとしている実際のものではありません。実際のプロセスはcryptocoinの鉱夫です。そして、それは非常に飢えている資源です。 これは私がこのaproachをとったからです。プロセス出力をファイルにダンプし、別のプロセスで読み取る。 ノードがそれを処理できるかどうかわからないので、私は100%満足しているわけではありません。
これを行うにはもっと良い方法があれば、私は耳にはとても満足しています。ありがとう!
でコマンドを実行します。ファイルを切り捨てたので、ファイルの終わりがどこにあるべきだと思うところに書き込みを続けます。あなたはそうすることはできません。もちろん、node.jsには、子の標準出力をパイプする組み込みのメカニズムがありますか? –
ハリー、ありがとう、私は以下のコメントで言ったように、実際のプロセスはcryptocoinの鉱夫です。そして、非常にリソースが高価です。 nodejsがそれを管理できるかどうかは分かりません。そして、私はそれに頼りたくはありません。 これは、私がこのaproachを考え出し、出力をファイルにダンプし、別のプロセスで読むことになった理由です。それがより良い選択だと思いますか?または、使用するより良い言語ですか?前もって感謝します! – nicomonjelat
なぜ、子供がどのようにリソースを大量に消費しているかに違いはありますか?すべての親プロセスは出力を処理するだけです。 –