Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/04/2008, 22:09
oscarmoal
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
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.