简单的例子:
node someCode.js|grep "someString"
显示写出的 someString。
现在
node someCode.js|grep "someString" > /tmp/someFile &
在另一个窗口中:
ls -l /tmp/someFile
显示 0 个字节...所以我无法通过 cat 查看其内容。 我知道 process.stdout.write 是一个在写入时立即刷新的流......
我需要做什么来更新输出文件的内容?有一些复杂的方法,例如写入 UNIX 套接字和创建基于自定义 UNIX 套接字的类似猫的程序,但对于这个简单的要求来说,这些方法太繁重了。
最佳答案
我意识到这更像是一个 Linux 而不是 Node.js 问题。答案是here .它不是公认的答案,而是获得最多选票的答案。所以我的命令看起来像:
node someCode.js|stdbuf -oL grep "someString" > /tmp/someFile &
随着行的写出,现在可以在/tmp/someFile 中监视进度。使用 L 选项,字符串被写为 Lline-buffered。我将尝试编辑问题以将 Linux 添加为另一个标签。
关于node.js - 当定向到文件时,如何从 Nodejs 中的 stdout 刷新管道输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53395406/