Rendere la console dell'IDE funzionale come un Terminale
E' possibile rendere funzionale la console dell'IDE di Gambas similmente ad un Terminale.
Per ottenere questo risultato è necessario lanciare da codice la shell mediante il comando Exec[] nel modo che segue:
Public Sub Button1_Click() Exec [System.Shell] End
Per disattivare tale funzionalità, bisognerà gestirne il processo con Porcess e distruggerlo mediante il metodo .Kill:
Private pr As Process Public Sub Button1_Click() ' Gestiamo il processo, creato da "Exec", mediante una variabile di tipo "Process": pr = Exec [System.Shell] End Public Sub Button2_Click() ' Distruggiamo il processo creato con "Exec": pr.Kill End
Lanciare comandi e programmi dalla console dell'IDE di Gambas
In particolare si potranno lanciare in tal modo dalla console comandi bash e programmi in generale sia scrivendoli manualmente (proprio come in un Terminale), sia in alternativa - come nell'esempio che segue - via codice con l'uso di Process:
Private pr As Process Public Sub Form_Open() pr = Exec [System.Shell] For Write End Public Sub Button1_Click() Print #pr, "whereis gambas" Print #pr, "gedit" End
Inoltre, via codice sarà anche possibile raccogliere i dati di risultato dalla console, ponendo sotto osservazione il processo della shell, per gestirli altrove:
Private pr As Process Public Sub Form_Open() pr = Exec [System.Shell] For Read Write As "processo" End Public Sub Button1_Click() Print #pr, "whereis gambas" End Public Sub processo_Read() Dim s As String Line Input #pr, s TextArea.Text = s End
Intercettare il testo scritto nella console dell'IDE di gambas
L'attribuzione delle funzionalità tipiche di un terminale alla console dell'IDE di Gambas consente inoltre di poter intercettare e gestire altrove quanto viene scritto manualmente nella console medesima:
Private pr As Process Private fl As File Public Sub Form_Open() pr = Exec [System.Shell] For Read Write As "processo" ' Apriamo in lettura e sottoponiamo in osservazione lo standard In: fl = Open "/dev/stdin" For Read Watch End Public Sub File_Read() Dim s As String Line Input #fl, s TextArea.Text &= "\n" & s End