我有一套 Java 程序,它们在我们的 Linux 服务器上用作命令行工具。他们中的大多数使用一个在 STDERR 上打印进度条的类,类似于 Perl 的Term::ProgressBar
.
我希望每当 STDERR 进入终端时显示进度条,并在 STDERR 重定向时自动禁用自身,以便重定向数据中不会出现各种进度条片段。
检查System.console() == null
是我的第一个想法,但重定向 STDOUT 足以做到这一点true
,即使 STDERR 仍然会发送到终端。有什么我可以检查的特定于 STDERR 的内容吗?特定于 Linux 或使用本机 API 的解决方案就可以满足我的需求。
我想你正在寻找的是isatty(3)
, in unistd.h
。没有办法判断文件句柄是否已被重定向,但这会告诉您它是否仍然是交互式的。请参阅来源tty
GNU coreutils 中的命令。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)