Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Terminal, Como Enviarle Un Comando
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Terminal, Como Enviarle Un Comando 
 
Hola a todos.
Estoy tratando de enviarle un comando a la terminal de gambas pero no lo logro. rpobe con .print .exec pero no funcionan o estoy haciendo algo mal.
La idea es que al abrir la terminal se escriban uno orden de instalación de paquetes de dependencias.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Terminal, Como Enviarle Un Comando 
 
El procedimiento para enviar datos a un Terminal (externo al nuestro programa gambas) es muy complejo, pero no imposible.

**** Debe, pero, ser dicho que los comandos escritos en esta manera (es decir: enviados al Terminal por codigo) no funcionan ! ****
Funcionan solo si escritos en el Terminal por teclado... por manos tuyas.  

Pero... por lo que atañe a tu pregunta, este Terminal ya está abierto o será abierto por el programa gambas ?
Si es el segundo caso, el Terminal puede ser abierto usando "Shell" o el comando "Desktop.OpenTerminal".
 



 
última edición por vuott el Jueves, 13 Julio 2017, 18:30; editado 4 veces 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Terminal, Como Enviarle Un Comando 
 
...de todos modos, los datos (que siempre serán de tipo String), deben ser enviados a un Terminal usando su file-device especial (pts: pseudo-terminal slave), 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 "/dev/pts" 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 "bash", contenida por el archivo de sistema "comm" 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):
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


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



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Terminal, Como Enviarle Un Comando 
 
No entiendo esa necesidad de enviar comandos a un terminal desde otro programa, para eso está 'shell' o 'exec'. ¿De verdad el usuario tiene que mirar cómo se ejecutan comandos en una consola sin su intervención?

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Terminal, Como Enviarle Un Comando 
 
jguardon escribió: [Ver mensaje]
No entiendo esa necesidad de enviar comandos a un terminal desde otro programa...

Sì... en efecto tus perpejidades son pertinentes.
Un envio de datos al Terminal puede tener sentido quierendo ver aquellos datos en una ventana (del Terminal) externa.

"Per multos annos" yo estudié este problema del envio y uso de datos a un Terminal, y como ya he dicho, lo escribir un comando en el Terminal por codigo no tiene utilidad para la función del comando... el comando no funcionará !    
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Terminal, Como Enviarle Un Comando 
 
Vuott, muchas gracias por la respuesta.
Para aclarar perplejidades, que la verdad que si que es rara la pregunta, es porque el motivo de esta se debe a que, al correr desde el ide una aplicación que, o bien se esta desarrollando o se ejecuta desde el ide por otra razón, no es posible aplicarle las dependencias que se colocan a la hora de crear el paquete .deb, por ejemplo.
La solución es que  se me ocurrió, como se sabe lo que debe estar instalado en el sistema es primero verificar que ya este, luego lo que no este instalarlo, y es aquí donde entra este asunto de enviarle los comandos a la terminal.
En un principio lo hacia abriendo una terminal y una vez abierta le mandaba los comandos de instalación de paquetes por medio de Desktop.sendkeys, pero este método me daba problemas a veces en algunos escritorios que cambiaban "-" por "/" y además como esto lo hago orientado a los desarrolladores que van a usar el programa para modificarlo y meterle mano, me parece mas agradable que se les presente una terminal con lo que hay que instalar ya escrito pero que el desarrollador pueda ver, y en ultimo caso decidir si lo instala o no, o si instala una parte de las dependencias.
Eso es un poco la onda.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Terminal, Como Enviarle Un Comando 
 
Uhmmm... quizás... podría ser util crear y gestionar un Terminal con los recursos del Componente gb.term .   huh
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Mostrar Las Operaciones De Una Termin... romeox Controles/Librerías/Componentes 12 Martes, 26 Octobre 2010, 06:00 Ver último mensaje
kaudio
No hay nuevos mensajes Comando PV: Mostrar Información De Como V... jsbsan Shell Scripting 1 Sabado, 06 Julio 2013, 16:44 Ver último mensaje
shordi
No hay nuevos mensajes Peek O Como Grabar La Terminal En Un .gif tincho Mundo Linux 2 Lunes, 16 Enero 2017, 21:03 Ver último mensaje
tincho
No hay nuevos mensajes Duda Con Wttr.in En Comando Terminal Y Ese... portaro Shell Scripting 7 Domingo, 05 Enero 2020, 18:20 Ver último mensaje
portaro
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron