Как я могу определить, подключен ли STDIN к терминалу в Perl?
Вопрос
Как я могу определить, подключен ли 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
Но не очень симпатичная...
Не связан с StackOverflow