在Perl中,如何判断STDIN是否连接到终端?

9
如何在Perl中判断STDIN是否连接到终端?
3个回答

15
if (-t *STDIN) {
  # stdin is connected
} else {
  # stdin is not connected
}

我通常与-t *STDOUT一起使用,以查找我是从交互式shell还是从cron运行,以便启用更多输出。


12
您可能对IO::Interactive也感兴趣,它可以帮助您确定Perl是否正在与用户进行交互。仅仅连接到tty并不意味着用户将看到您的操作。

0
一个解决方案是使用tty:
[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty

但这不是很漂亮...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接