Comment puis-je savoir si STDIN est connecté à un terminal en Perl?Comment puis-je savoir si STDIN est connecté à un terminal en Perl?
7
A
Répondre
11
if (-t STDIN) {
# stdin is connected
} else {
# stdin is not connected
}
Je l'utilise habituellement en conjonction 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.
0
Une solution serait d'utiliser TTY:
[[email protected]] ~> tty
/dev/pts/0
[[email protected]] ~> echo y | tty
not a tty
Mais pas très joli ...
11
Vous pourriez également être intéressé par IO::Interactive pour savoir si Perl pense qu'il est en interaction avec un utilisateur. Le simple fait d'être connecté à un terminal ne signifie pas que l'utilisateur va voir ce que vous faites.
Ce n'est pas portable non plus. –