Bueno les cuento.. Necesito saber como obtener el pid de proceso de una forma optima.
Esto es lo que he hecho. Pero es Poco optimo.
//Primero ejecuto el programa que quiero, desde Java.
Runtime.getRuntime().exec("cmd /c \""+rutaDelPrograma+"\"");
//Luego llamo este método que he hecho.
/*Este método lo que hace es que obtiene una lista de procesos activos haciendo uso del cmd de windows, busca el nombre del programa que le pasamos y obtiene el PID que se encuentre en la misma linea. */
public int obtenerPID(String programa) throws Exception
{
Process p = Runtime.getRuntime().exec("cmd /c tasklist /nh");
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader (new InputStreamReader(is));
String tareaR = br.readLine();
while(tareaR!=null)
{
StringTokenizer st = new StringTokenizer(tareaR," ");
String nombre = st.nextToken();
if(nombre.compareToIgnoreCase(programa)==0)
return Integer.parseInt(st.nextToken());
tareaR = br.readLine();
}
return -1;
}
Bueno me parece que es un poco ineficiente ya que mientras más grande sea la lista de procesos más se tardará. Bueno y que en caso de haber dos procesos con el mismo nombre entonces se deberia preguntar si la PID del proceso ya fue registrada y esas cosas... Lo cual aumentaria más el tiempo.
Bueno mi pregunta es: ¿Hay algun método de Java que me haga esto?...
Saludos