gpt4 book ai didi

node.js - Nodejs 读取某些进程的标准输出并执行操作

转载 作者:太空宇宙 更新时间:2023-11-04 02:00:27 25 4
gpt4 key购买 nike

我想在Windows中使用nodejs读取某些进程的标准输出。

到目前为止我得到了这个:

我用以下方法模拟过程输出:

ping -t google.com > ping.txt

ping 输出转储到 ping.txt 文件中。在 Node 中监视该文件的更改。

所以,在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 实验。

后来我计划通过 websocket 输出 stdout 进程,但现在我遇到了这个问题。

提前致谢!谨致问候!

编辑 1:ping 过程不是我想要阅读的真实过程。真正的过程是加密货币矿工。而且它非常消耗资源。那是因为我采取了这种方法。将进程输出转储到文件中并用另一个进程读取它。我并不是 100% 高兴让 NodeJS 管理加密货币进程,因为我不知道 Node 是否可以处理它。

如果有更好的方法可以做到这一点,我很高兴听到。谢谢!

最佳答案

我使用 npm 包做了一个小片段 rotating-file-stream它似乎有效:

// stream.js
const rfs = require('rotating-file-stream');

const stream = rfs('ping.txt', {
size: '500B', // rotate every 500 Bytes written
});

const stdin = process.openStdin();

stdin.pipe(stream);

在终端中运行命令 ping google.com | Node stream.js

关于node.js - Nodejs 读取某些进程的标准输出并执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46208901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com