Come faccio a sapere se STDIN è collegato ad un terminale in Perl?
Domanda
Come faccio a sapere se STDIN è collegato ad un terminale in Perl?
Soluzione
if (-t STDIN) {
# stdin is connected
} else {
# stdin is not connected
}
Io di solito uso questo in collaborazione con -t STDOUT, per scoprire se sto correndo da una shell interattiva, oppure da cron, per consentire una più uscita.
Altri suggerimenti
Potreste anche essere interessati a IO :: Interactive di capire se Perl pensa esso interagisce con un utente. Semplicemente essendo collegato ad un terminale non significa che l'utente è andare a vedere quello che fai.
Una soluzione potrebbe essere quella di utilizzare tty:
[root@server] ~> tty
/dev/pts/0
[root@server] ~> echo y | tty
not a tty
Ma non molto carina ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow