是否有任何方法可以检测到来自我的Node.js脚本的输出是否被管道传输到终端之外的其他地方?
我想知道是否发生了这样的事情:
node myscript.js | less
或者如果这种情况发生:
node myscript.js
发布于 2013-12-14 17:01:37
最简单的方法是process.stdout.isTTY (0.8 +):
$ node -p -e "Boolean(process.stdout.isTTY)"
true
$ node -p -e "Boolean(process.stdout.isTTY)" | cat
false(例如来自正式文件)
或者,您可以将 module用于更细粒度的控件:
if (require('tty').isatty(1)) {
// terminal
}发布于 2013-12-14 18:03:01
您可以通过查看它的文件描述符点(例如,如下所示)来检查运行过程的stdout是否是管道化的。
readlink /proc/<your process id>/fd/1或者,更具体地说
[[ $(readlink /proc/$(pgrep -f 'node myscript.js')/fd/1) =~ ^pipe ]] && echo pipedhttps://stackoverflow.com/questions/20585729
复制相似问题