Rendere la console dell'IDE funzionale come un Terminale

Da Gambas-it.org - Wikipedia.

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
  
  TextArea1.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