Domanda

Come faccio a sapere se STDIN è collegato ad un terminale in Perl?

È stato utile?

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