¿Cómo puedo saber si STDIN está conectado a un terminal en Perl?
Pregunta
¿Cómo puedo saber si STDIN está conectado a un terminal en Perl?
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