Intercettare la stringa di caratteri immessi dall'utente nella console o Terminale
Il caso esposto in questa pagina prevede un codice, nel quale:
1) il processo viene temporaneamente arrestato sino a quando l'utente non preme il tasto "Invio";
2) durante la fermata del processo l'utente immette uno o più caratteri e li invia allo standard input premendo il tasto "Invio" della tastiera;
3) viene raccolto e mostrato in Terminale quanto appena inviato allo standard input.
Questi tre obiettivi possono essere raggiunti mediante diverse modalità.
Indice
Uso dell'istruzione "File.In.ReadLine()"
Questa modalità utilizza direttamente l'istruzione "File.In.ReadLine()".
Il Metodo ".ReadLine()" legge dal flusso una riga fino al carattere escape di "fine riga e a capo".
Esempio:
Public Sub Main() Dim s As String ' Legge una riga di dati dallo "stdin": s = File.In.ReadLine() Print s End
Uso della funzione Input
Questa modalità prevede il semplice uso della funzione Input in varie possibilità che di seguito si espongono.
Con una variabile stringa
Questa modalità fa semplicemente uso di Input e di una variabile di tipo stringa:
Public Sub Main() Dim s As String Input s Print "Tasto premuto !", s End
Con la Proprietà File.In
Questa modalità fa uso in modo diretto della proprietà File.In che ritorna lo standard input del flusso:
Public Sub Main() Dim s As String Input #File.In, s Print "Tasto premuto !", s End
con il file-device /dev/stdin
Questa modalità fa uso del file-device /dev/stdin che dovrà essere aperto in lettura:
Public Sub Main() Dim fl As File Dim s As String fl = Open "/dev/stdin" For Read Input #fl, s fl.Close Print "Tasto premuto !", s End
con il file-device /dev/tty
Questa modalità fa uso del file-device /dev/tty che dovrà essere aperto in lettura:
Public Sub Main() Dim fl As File Dim s As String fl = Open "/dev/tty" For Read Input #fl, s fl.Close Print "Tasto premuto !", s End
con il file-device /dev/pts/...
Questa modalità fa uso del file-device /dev/pts/... specifico del Terminale nel quale è stata lanciata la nostra applicazione a riga di comando. Lo specifico file-device di tipo pts, è identificato con un numero che però andrà preventivamente individuato e dovrà essere aperto in lettura:
Public Sub Main() Dim fl As File Dim s As String fl = Open "/dev/pts/..." For Read Input #fl, s fl.Close Print "Tasto premuto !", s End
Con il file /proc/self/fd/0
Questa modalità fa uso del file /proc/self/fd/0 che dovrà essere aperto in lettura:
Public Sub Main() Dim fl As File Dim s As String fl = Open "/proc/self/fd/0" For Read Input #fl, s fl.Close Print "Tasto premuto !", s End