Comment puis-je savoir si STDIN est connecté à un terminal en Perl?
Question
Comment puis-je savoir si STDIN est connecté à un terminal en Perl?
La solution
if (-t STDIN) {
# stdin is connected
} else {
# stdin is not connected
}
Je l'habitude d'utiliser cette option conjointement avec -t STDOUT, pour savoir si je suis en cours d'exécution d'un shell interactif, ou de Cron, pour permettre plus de sortie.
Autres conseils
Vous pourriez également être intéressé par IO :: interactif pour savoir si Perl pense il est en interaction avec un utilisateur. Il suffit d'être connecté à un TTY ne signifie pas que l'utilisateur va voir ce que vous faites.
Une solution serait d'utiliser TTY:
[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty
Mais pas très joli ...
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow