9

STDIN が Perl の端末に接続されているかどうかを確認するにはどうすればよいですか?

4

3 に答える 3

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

私は通常、これを と組み合わせて使用​​して-t *STDOUT、対話型シェルから実行しているか、cron から実行しているかを調べて、より多くの出力を有効にします。

于 2009-02-09T16:14:42.790 に答える
12

また、 IO::Interactiveに興味があるかもしれません。Perl がユーザーと対話していると考えているかどうかを判断するためです。単に tty に接続されているからといって、ユーザーがあなたの行動を見ているわけではありません。

于 2009-02-09T17:21:34.297 に答える
0

1 つの解決策は、 ttyを使用することです。

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

でもあんまり綺麗じゃない…

于 2009-02-09T16:16:02.427 に答える