Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

A Vuelta Con El Control De Procesos

A Vuelta Con El Control De Procesos
Artículo
Responder citando    Descargar mensaje  
Mensaje A Vuelta Con El Control De Procesos 
 
Creo que, efectivamente, el calor me ha derretido la sesera y estoy más ciego que un gato de yeso.
He leído con detalle lo que he podido sobre el control de procesos y no hay manera de conseguir desviar la salida estándar...
Aquí tenéis un extracto de código de El Generador de Copias de Seguridad de MySQL que acabo de subir a este foro.
PRIVATE Proc AS Process

PRIVATE SUB Process_Read() 'este evento ocurre cuando el comando genera una salida, se supone
  DIM cad AS String
  LINE INPUT #Proc, cad
  texto.text = cad & "\n" & texto.Text
END

PRIVATE SUB Process_Error(cad AS String) 'este evento ocurre cuando el comando genera un error, se supone
  texto.text = cad & "\n" & texto.Text
END

PUBLIC PROCEDURE restaurar(Camino AS String, Copia AS String, OPTIONAL texto AS Object)
 
  DIM anums AS NEW Integer[]
  DIM anums2 AS NEW Integer[]
  DIM n AS Integer
  DIM pasadas AS Integer
  DIM carpeta AS String
  DIM elpath, scad AS String
  
  comun.Colate = If(comun.Colate, comun.Colate, " /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_spanish_ci */")

  Copia = Camino &/ Copia
  carpeta = Left(Copia, RInStr(copia, ".") - 1)
  TRY MKDIR carpeta
  texto.Text = ("Procesando copia \n")
  WAIT 0.1
  conDestino.conectar
  texto.Text = ("Descomprimiendo copia \n") & texto.text
  WAIT 0.1
  elpath = Mid(Copia, 2, RInStr(Copia, "/") - 1)
  IF Right(camino, 1) <> "/" THEN camino &= "/"
'  SHELL "pax -rzvf " & Copia & " -s," & elpath & "," & camino & "," WAIT   'Esto funciona, y deja un rastro en la consola de gambas
  Proc = SHELL "pax -rzvf " & Copia & " -s," & elpath & "," & camino & "," FOR READ  'Esto también funciona, pero no deja rastro en ningún sitio...
  WHILE Proc.State = process.Running
     WAIT 0.1    'Esto es un intento de ver en tiempo de ejecución que pasa... pero no veo na, claro
  WEND

  ...
  ...
  ...

END
 

¿Alguien puede orientarme de por qué la llamada a SHELL (o EXEC, que las dos cosas he probado) no levanta el evento Process_Read?



 
última edición por shordi el Viernes, 30 Julio 2010, 12:20; editado 1 vez 
Editado por Invitado, Jueves, 01 Enero 1970, 01:00:
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Viernes, 30 Julio 2010, 12:18 ]
 


A Vuelta Con El Control De Procesos
Comentarios
Responder citando    Descargar mensaje  
Mensaje Re: A Vuelta Con El Control De Procesos 
 
Quizás debas utilizar el nombre de instancia para el manejador de los eventos de ese proceso:

DIM proc as Process

PUBLIC SUB proc_Read()
    '...
END


No estoy muy seguro porque no lo he probado, pero lo que sí es seguro es que el manejador debe declararse como Público para funcione.


Saludos



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Viernes, 30 Julio 2010, 15:24 ]
Responder citando    Descargar mensaje  
Mensaje Re: A Vuelta Con El Control De Procesos 
 
Lo probaré Jesús. Gracias.



 
shordi - Ver perfil del usuario Enviar mensaje privado  
shordi [ Viernes, 30 Julio 2010, 16:20 ]
Mostrar mensajes anteriores:    
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

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


 



 

cron