Pergunta

Como posso saber se STDIN está conectado a um terminal em Perl?

Foi útil?

Solução

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

Eu costumo usar isso em conjunto com STDOUT -t, para descobrir se eu estou correndo de um shell interativo, ou a partir de cron, para permitir uma maior produção.

Outras dicas

Você pode também estar interessado em IO :: Interativo para descobrir se Perl pensa que está a interagir com um utilizador. Basta estar conectado a um tty não significa que o usuário está indo para ver o que você faz.

Uma solução seria a utilização tty:

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

Mas não muito bonito ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top