https://foro.gambas-es.org/viewtopic.php?f=4&t=6510&p=39227#p39227
-----------------------------------
vuott
Jueves, 13 Julio 2017, 18:28

Re: Terminal, Como Enviarle Un Comando
-----------------------------------
...de todos modos, los [u]datos[/u] (que siempre serán de tipo [i]String[/i]), deben ser enviados a un Terminal usando su file-device especial (pts: [i]pseudo-terminal slave[/i]), que tu puedes ver en la ruta "/dev/pts".
Cuando se abre un Terminal, el sistema crea un file-device pts que se refiere a el Terminal. (Esto vale tambien para la consola del IDE de Gambas !)

Pero nosotros no sabemos cual file-device en la ruta "[i]/dev/pts[/i]" atañe al Terminal que nos interesa. Por eso, tenemos que:

1) individuar el Terminal por el numero de identificación de su proceso, buscando la palabra "[i]bash[/i]", contenida por el archivo de sistema "[i]comm[/i]" que pertenece a la carpeta del proceso del Terminal.
2) luego, podemos abrir con "For Write" el archivo "...../fd/1", que pertenece a la carpeta del proceso del Terminal y que es un enlace al especifico archivo dispositivo "pts" del nuestro Terminal.

Una modalidad podria ser esta (...está claro que el Terminal ya debe estár abierto):
[code linenumbers=false syntax=gambas]Private fl As File


Public Sub Form_Open()

  Dim s As String
  Dim ss As String[]
  Dim c As Short
  
    ss = Dir("/proc", Null, gb.Directory)

    c = ss.Count
    
' Vamos a buscar la palabra "bash" en el archivo "comm" de todos los ultimos procesos abiertos:
    Repeat
      Dec c
    Until File.Load("/proc" &/ CStr(ss[c]) &/ "comm") Begins "bash"
    
   fl = Open "/proc" &/ CStr(ss[c]) &/ "fd/1" For Write

End

Public Sub Button1_Click()

   Write #fl, "ls"

End

Public Sub Button2_Click()

  fl.Close
  Me.Close

End[/code]

...pero para tu objetivo final no resolverás nada.


