我怎样才能判断是否STDIN被连接到一个终端在Perl?

有帮助吗?

解决方案

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

我通常与-t STDOUT一起使用此,以找出是否我是从一个交互式壳运行,或者从cron,使更多的输出。

其他提示

您可能也有兴趣在 IO ::互动,以找出是否认为Perl的它是与用户交互。简单地连接到一个tty并不意味着用户会看到你做什么。

的一种解决方案将是使用TTY:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top