9

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

4

3 回答 3

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

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

于 2009-02-09T16:14:42.790 回答
12

您可能还对IO::Interactive感兴趣,以确定 Perl 是否认为它正在与用户交互。仅仅连接到一个 tty 并不意味着用户会看到你在做什么。

于 2009-02-09T17:21:34.297 回答
0

一种解决方案是使用tty

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

但它不是很漂亮...

于 2009-02-09T16:16:02.427 回答