Как я могу узнать, подключен ли STDIN к терминалу в Perl? - PullRequest
8 голосов
/ 09 февраля 2009

Как узнать, подключен ли STDIN к терминалу в Perl?

Ответы [ 3 ]

13 голосов
/ 09 февраля 2009
if (-t STDIN) {
  # stdin is connected
} else {
  # stdin is not connected
}

Обычно я использую это в сочетании с -t STDOUT, чтобы узнать, запущен ли я из интерактивной оболочки или из cron, чтобы активировать больше вывода.

12 голосов
/ 09 февраля 2009

Вас также может заинтересовать IO :: Interactive , чтобы выяснить, считает ли Perl, что он взаимодействует с пользователем. Простое подключение к tty не означает, что пользователь увидит, что вы делаете.

0 голосов
/ 09 февраля 2009

Одним из решений будет использование tty:

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

Но не очень красиво ...

...