Pregunta

¿Cómo puedo saber si STDIN está conectado a un terminal en Perl?

¿Fue útil?

Solución

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

Yo suelo usar esto en conjunto con -t STDOUT, para averiguar si estoy corriendo de un shell interactivo, o desde cron, para permitir una mayor producción.

Otros consejos

Usted también puede estar interesado en IO :: Interactivo de averiguar si piensa Perl que está interactuando con un usuario. Simplemente se conecta a un teléfono de texto no significa que el usuario va a ver lo que haces.

Una solución sería utilizar TTY:

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

Pero no muy bonita ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top