Question

Comment puis-je savoir si STDIN est connecté à un terminal en Perl?

Était-ce utile?

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
scroll top