node.js - 如何检测 Node 的 process.stdout 是否正在通过管道传输?

标签 node.js shell pipe tty

有什么方法可以检测我的 Node.js 脚本的输出是否正在通过管道传输到终端以外的其他东西?

我想要一些方法来检测是否发生这种情况:

Node myscript.js |少

或者如果发生这种情况:

node myscript.js

最佳答案

最简单的方法是 process.stdout.isTTY (0.8 +):

$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false

(来自官方文档的示例)

您也可以使用 tty module更细粒度的控制:

if (require('tty').isatty(1)) {
    // terminal
}

关于node.js - 如何检测 Node 的 process.stdout 是否正在通过管道传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20585729/

相关文章:

css - Svelte/Sapper构建-似乎在构建后仍然存在旧CSS?

c - 为什么具有自定义函数的 rl_bind_key 在 OSX/macOS 上的 readline 中失败

r - knitr 引擎=bash。想要为每个 block 单独设置工作目录

c# - 远程关闭后保持管道打开的最佳方法

javascript - 创建一个预签名的 url 并使用 Node js 将文件上传到谷歌云存储

node.js - 将请求传递给特定的 fork Node 实例

python - 从 bash 脚本向 python 传递参数

C# 进程 : Using Pipes/File Descriptors

iphone - iPhone 上的 Fork()

node.js - 在 dialogflow sdk v2 上将参数发送到 webhook