Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Escribir En Un Proceso...
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Escribir En Un Proceso... 
 
He visto varios ejemplos de Exec y Shell, donde podemos leer la salida del comando  mendiante procesos y la orden "read", por ejemplo:

EXEC "ls -la /tmp" FOR READ
...
PUBLIC SUB Process_Read()
  DIM sLine AS String
  READ #LAST, sLine, -256
  Content = Content & sLine
  PRINT sLine;
END
 


Pero no he visto ningún ejemplo de como escribir en el proceso (por ejemplo para mandar comando)
¿sabeis como se podria hacer?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Un Proceso... 
 
Ni idea, ¿qué quieres hacer?
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Un Proceso... 
 
Shordi:
Citar:
Ni idea, ¿qué quieres hacer?


Estoy liado con un front-end del programa telegram-cli... (este terminal tambien tiene un prompt), donde se le escriben las ordenes, para enviar mensajes, añadir usuarios, etc...

Mas o menos ya lo tengo conseguido:
He creado una variable tipo stream:
Citar:
Public EscribirEnPrograma As Stream


Luego asigno la ejecucion de EXEC a ella, y con el parametro "For Write":
Citar:
  EscribirEnPrograma = Exec [ruta, "-k", "tg-server.pub"] For Write


Y por, ejemplo para mandar la orden de "lista de contactos(contact_list)", lo hago asi:
Citar:
  Write #EscribirEnPrograma, "contact_list" & GB.Lf



Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Un Proceso... 
 
Un pequeño ejemplo práctico tú puedes verlo a esta página del Wiki italiano:

http://www.gambas-it.org/wiki/index..._standard_Input


Allí hay dos programas gambas (el principal se llama: "primo", el secundario se llama: "secondo"). El programa principal abre el programa secundario mediante "Process'' y envia un valor numerico al secundario, escribiendolo con Write en el proceso. El proceso secundario hace una simple adición con el valor recibido, y restituye el resultado a el proceso principal.


Saludos
 



 
última edición por vuott el Domingo, 28 May 2017, 03:45; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Un Proceso... 
 
...por supuesto es tambien posible enviar un valor a un programa, escrito en C, abierto y gestionado con la Clase Process por un programa Gambas.

Exemplum simplex.
Vamos a escribir en un editor de texto este simple codigo fuente del programa C:
#include <stdio.h>


int main() {

        char s[24];

        do {

                fgets(s, 24, stdin);

        } while(NULL==s);

        printf("%s\n", s);

        return (0);

}

Este codigo debe ser compilado así:
 ~ $ gcc -o /ruta/del/programa/compilado /ruta/del/codigo/fuente.c


El codigo del programa principal en lenguaje gambas es:
Private pro As Process


Public Sub Button1_Click()

  AbreFluxo()

End


Private Procedure AbreFluxo()
  
  pro = Shell "/ruta/del/programa/compilado" For Write
  
End


Public Sub Button2_Click()

' Escribe una cadena anti-pythonista en el proceso del programa escrito en C:
  Write #pro, "Yo no soy Pythonista !"
  
  pro.Close
  AbreFluxo()

End


Public Sub Button3_Click()

  pro.Close
  pro.Kill
  Me.Close

End



Por tanto, el programa gambas enviará la cadena a el programa escrito en C.
Como funciona...
1) en un Terminal lanzar el programa gambas;
2) presionar Button1 para lanzar el programa escrito en C y ya compilado;
3) presionar (cuanto quiereis) Button2 para escribir la cadena anti-pythonista en el proceso del programa escrito en C;
4) para cerrar todo, presionar Button3
Para acabar todo, matando el proceso, no olvidéis de presionar Button3 !!!
 



 
última edición por vuott el Domingo, 28 May 2017, 03:46; editado 1 vez 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Un Proceso... 
 
Vuot:

Muchas gracias por el ejemplo...

Una duda: ¿que diferencia hay entre un proceso y un stream?
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Escribir En Un Proceso... 
 
Stricto sensu, "Stream" es una Clase en gambas que ofrece la posibilidad de (en particular) escribir y leer datos de una porción de memoria reservada, apuntada por un Puntero.

Exemplum:
Public Sub Main()

  Dim p As Pointer
  Dim st As Stream
  
' Reserva 16 byte de memoria:
   p = Alloc(SizeOf(gb.Byte), 16)
  
' Escribe con "Memory Stream" un mensaje anti-Pythonista en el área de memoria reservada y apuntada por el Puntero "p":
   st = Memory p For Write
   Write #st, "Yo no soy Pythonista !"
   st.Close
  
' Dereferencia el Puntero y muestra orgullosamente el mensaje anti-Pythonista:
   Print String@(p)
  
' Programmatis memoriam liberat:
   Free(p)

End




Creo que la Clase "Process" de gambas se basa en la gestión de los procesos en Linux:
http://advancedlinuxprogramming.com...3-processes.pdf
http://www.tldp.org/LDP/tlk/kernel/processes.html
 



 
última edición por vuott el Lunes, 29 May 2017, 00:29; editado 7 veces 
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 Hacer Un Proceso Separado?? h4k General 11 Domingo, 21 Febrero 2010, 21:51 Ver último mensaje
Ender
No hay nuevos mensajes Controlar Proceso Del Ftp pittusa General 4 Viernes, 11 Febrero 2011, 05:30 Ver último mensaje
razaAztk
No hay nuevos mensajes Como Escribir 2 Textbox Al Mismo Tiempo O ... metalgearxd General 2 Sabado, 09 Marzo 2013, 00:40 Ver último mensaje
metalgearxd
No hay nuevos mensajes Proceso Zombie Shell Mundo Linux 0 Jueves, 23 Abril 2020, 12:05 Ver último mensaje
Shell
 

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