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

StackOverflow https://stackoverflow.com/questions/528781

  •  22-08-2019
  •  | 
  •  

Вопрос

Как я могу определить, подключен ли 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