Foros del Web » Programación para mayores de 30 ;) » Java »

IMPORTANTE, Destruir un proceso!

Estas en el tema de IMPORTANTE, Destruir un proceso! en el foro de Java en Foros del Web. Que tal Maestros de la programación! Me dirijo a ustedes agradeciendo de ante mano a todos aquellos que le puedan dar un ojo a este ...
  #1 (permalink)  
Antiguo 28/04/2008, 22:09
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta IMPORTANTE, Destruir un proceso!

Que tal Maestros de la programación!

Me dirijo a ustedes agradeciendo de ante mano a todos aquellos que le puedan dar un ojo a este asunto y doblemente a aquellos que puedan responder. Vamos al grano, a continuación les mostraré el código de un programa que he estado desde ya hace algún tiempo desarrollando, la pregunta es, como puedo destruir dos procesos que pongo en marcha en el Thread de este programa, voy a ser más especifico cuando se ejecuta el programa, primero debo ejecutar dos procesos que se conectarán a un equipo remoto (con dirección IP), y una vez que se conecte descargará un archivo de texto al equipo donde se ejecuta la aplicación de java.

Como funcionan los procesos?, bien el primero crea la conexión y el segundo hace la copia, cabe aclarar que si ejecuto por separado estos procesos el primero si se conecta establece la conexión y en 30 segs. se da de baja solo, el segundo lo mismo si encuentra el archivo y lo puede copiar en 30 se apaga solito, mi problema consiste en que cuando no se puede establecer la conexión, o el archivo no se encuentra, los procesos se bloquean quedándose en memoria y no permitiendo el avance del programa.

Lo que pretendo es que aunque no se establezca la comunicación o el archivo no se encuentre, el programa de java permita continuar con el resto de las instrucciones del programa, así que lo que habría que hacer es que SI el primer o segundo proceso, según sea el caso, se llegarán a bloquear, entonces el programa responda en 10 segs. y los destruya para así liberar la memoria y el programa pueda continuar.

He intentado proceso.destroy(), y otras cosas sin éxito, así que por favor les pido me puedan ayudar a resolver este problema que me tiene loco, por favor, espero sus respuestas, dudas o comentarios.

Otra cosa que se me ocurre preguntar es como puedo saber si un proceso ya acabo y entonces proceder a ejecutar el siguiente proceso, o bien, la siguiente instrucción?

A continuación les pongo el código, ojala puedan darme una mano.

Código:
import java.io.*;
import java.util.*;

public class Obten extends Thread
{
   private Boolean running = true;
   public Obten() {}
   public void run()
   {
      while (running)
      {
         try
         {
            try
            {
               
               //Procesos a destruir
               Process p = Runtime.getRuntime().exec(“Mi proceso1.exe”);
               Process q = Runtime.getRuntime().exec(“Mi proceso2.exe”);
               
               //Función que copia y descompone un archivo, probada y funcionando
               copiarArchivo();
            }
            catch(Exception e)
            {
               System.out.println(e);
            }
             //El thread hará que el programa se repita cada 10 segs.
            Thread.sleep(10000);
         }
         catch(InterruptedException e)
         {
           running = false;
         }
      }
   }
   
   public static void main(String[] main)
   {
       //Arrancamos el thread que tendrá una ejecución ininterrumpida 
      new Obten().start();
   }
    
   public static void copiarArchivo()
   {
      //Aquí el código que copia y descompone un archivo de texto, función que ya 
      // esta probada y funcionando sin errores
      …….
   }
}
Gracias por todo.
  #2 (permalink)  
Antiguo 29/04/2008, 16:22
Avatar de anubisdp  
Fecha de Ingreso: abril-2008
Mensajes: 12
Antigüedad: 16 años
Puntos: 0
Re: IMPORTANTE, Destruir un proceso!

Process p = Runtime.getRuntime().exec(“Mi proceso1.exe”);//establece conexion

Process q = Runtime.getRuntime().exec(“Mi proceso2.exe”);//copia archivo

Para que copie el archivo se tiene que establecer la conexion, entoncees tienes que esperar a que termine el proceso 1 para lanzar el 2do. pon esto:

Process p = Runtime.getRuntime().exec(“Mi proceso1.exe”);//establece conexion
p.waitFor();; //espera a que termine
Process q = Runtime.getRuntime().exec(“Mi proceso2.exe”);//copia archivo
q.waitFor();; //espera a que termine

//y posteriormente lanza:
copiarArchivo();

prubalo...

saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:01.