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

时间:2009-02-09 16:10:51

标签: perl terminal stdin

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

3 个答案:

答案 0 :(得分:13)

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

我通常将它与-t STDOUT结合使用,以确定我是从交互式shell还是从cron运行,以启用更多输出。

答案 1 :(得分:12)

您可能也对IO::Interactive感兴趣,以确定Perl是否认为它与用户进行交互。简单地连接到tty并不意味着用户将会看到你做的事情。

答案 2 :(得分:0)

一种解决方案是使用tty:

[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty

但不是很漂亮......