首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测节点的process.stdout是否被管道传输?

问如何检测节点的process.stdout是否被管道传输?
EN

Stack Overflow用户
提问于 2013-12-14 16:45:42
回答 2查看 4.9K关注 0票数 19

是否有任何方法可以检测到来自我的Node.js脚本的输出是否被管道传输到终端之外的其他地方?

我想知道是否发生了这样的事情:

node myscript.js | less

或者如果这种情况发生:

node myscript.js

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-14 17:01:37

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

代码语言:javascript
复制
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false

(例如来自正式文件)

或者,您可以将 module用于更细粒度的控件:

代码语言:javascript
复制
if (require('tty').isatty(1)) {
    // terminal
}
票数 36
EN

Stack Overflow用户

发布于 2013-12-14 18:03:01

您可以通过查看它的文件描述符点(例如,如下所示)来检查运行过程的stdout是否是管道化的。

代码语言:javascript
复制
readlink /proc/<your process id>/fd/1

或者,更具体地说

代码语言:javascript
复制
[[ $(readlink /proc/$(pgrep -f 'node myscript.js')/fd/1) =~ ^pipe ]] && echo piped
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20585729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档