elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Obtener PID (id de Proceso) desde Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener PID (id de Proceso) desde Java  (Leído 16,500 veces)
Lopardo

Desconectado Desconectado

Mensajes: 119


Solo es el principio...


Ver Perfil WWW
Obtener PID (id de Proceso) desde Java
« en: 5 Enero 2007, 14:56 pm »

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


En línea

...de la sabiduría.
cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Obtener PID (id de Proceso) desde Java
« Respuesta #1 en: 1 Enero 2011, 03:53 am »

Oie. pero en que SO probaste tu codigo?

Me manda este error:
Citar
java.util.NoSuchElementException

Sera que es por que utilizo Windows 7 ?

Mira esta es la implementacion de tu codigo.
Código
  1. import javax.swing.*;
  2. import java.io.*;
  3. import java.util.*;
  4.  
  5. public class PID {
  6.  
  7.    public static void main (String[] args){
  8.     Comprobador Obj=new Comprobador();
  9.     try{
  10.     int Pid=Obj.obtenerPID("firefox.exe");
  11.     JOptionPane.showMessageDialog(null,"PID es "+ Pid);
  12.     }catch(Exception e){
  13.     JOptionPane.showMessageDialog(null,e);
  14.     }
  15.  
  16. }
  17. }
  18. class Comprobador{
  19. public int obtenerPID(String programa) throws Exception
  20.   {
  21.            Process p = Runtime.getRuntime().exec("cmd /c tasklist /nh");
  22.            InputStream is = p.getInputStream();
  23.            BufferedReader br = new BufferedReader (new InputStreamReader(is));
  24.            String tareaR = br.readLine();
  25.  
  26.            while(tareaR!=null)
  27.            {
  28.                StringTokenizer st = new StringTokenizer(tareaR," ");
  29.                String nombre = st.nextToken();
  30.                if(nombre.compareToIgnoreCase(programa)==0)
  31.                  return Integer.parseInt(st.nextToken());
  32.                tareaR = br.readLine();
  33.            }  
  34.       return -1;
  35.   }
  36. }
  37.  


En línea






cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Obtener PID (id de Proceso) desde Java
« Respuesta #2 en: 1 Enero 2011, 03:56 am »

Ups. perdon ya escucho al moderador diciendo. No revivas temas Viejos  >:( >:(


Chale, no pues igual si es por el SO, el mensaje es del 5 de enero del 2007 de seguro el dueño ya ni vive no ma. jajajaj

Bueno si alguien me puede ayudar Se los agredeceria :)
En línea






Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Obtener PID (id de Proceso) desde Java
« Respuesta #3 en: 1 Enero 2011, 12:26 pm »

No pasa nada xDD todo sea por ayudar un poco.
Que no vuelva a ocurrir o tendré que cerrar el tema jeje
Miraré el source y os digo algo.
Edito: Estas seguro de que corres el firefox.exe al ejecutar el programa? Tienes permisos administrativos?

Saludos
« Última modificación: 1 Enero 2011, 12:30 pm por Debci » En línea

cyberserver

Desconectado Desconectado

Mensajes: 162


Lo que una mente crea, otra lo destruye


Ver Perfil WWW
Re: Obtener PID (id de Proceso) desde Java
« Respuesta #4 en: 1 Enero 2011, 20:25 pm »

Es que no te entiendo, que quieres decir aqui
Citar
Miraré el source y os digo algo.
que Cheque el codigo y me dices algo? ? :o :o

Y sip, esta en uso el firefox si tengo permisos por eso es que me saco de onda, pero no puedo ver su PID :rolleyes: :rolleyes:
Siento que ese metodo ha de estar mal programado

Citar
java.util.NoSuchElementException: Esa excepcion salta cuando haces un next() a una coleccion que en realidad no tiene más elementos,

Pero no es tanto el codigo, eso se arregla.
El caso es. ¿Alguien de ustedes conoce otro metodo para ver el pid(IdentificadorDeProceso) de un proceso?
En línea






1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Obtener PID (id de Proceso) desde Java
« Respuesta #5 en: 3 Enero 2011, 20:55 pm »

Que tal.
Tal vez este ejemplo puede ayudarte.

http://hex.ro/wp/projects/jni-tutorial/

Un saludo.
En línea

abc
Debci
Wiki

Desconectado Desconectado

Mensajes: 2.021


Actualizate o muere!


Ver Perfil WWW
Re: Obtener PID (id de Proceso) desde Java
« Respuesta #6 en: 4 Enero 2011, 19:54 pm »

Piensa que esta muy muy restringido desde el nacegador, si no tienes permisos 100% olvidate...
Como dices que lo tienes, te hago una recomendación, no lo hagas de ese modo, usa JNI y aplica el API de windows al problema.

Saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
OBTENER ID DEL PROCESO
Programación Visual Basic
ciruit 8 2,893 Último mensaje 11 Diciembre 2005, 18:22 pm
por kakinets
Obtener handles de ficheros asociados a un proceso
.NET (C#, VB.NET, ASP)
mmob 8 5,650 Último mensaje 17 Diciembre 2007, 17:43 pm
por mmob
obtener el nombre de la ventana de un proceso
Programación Visual Basic
70N1 3 2,760 Último mensaje 5 Marzo 2009, 17:14 pm
por 70N1
Duda obtener ID proceso
Programación Visual Basic
h0oke 6 4,948 Último mensaje 14 Julio 2009, 01:51 am
por h0oke
[Solucionado] Obtener código MD5 Checksum de un proceso abierto
.NET (C#, VB.NET, ASP)
Segurida 2 3,533 Último mensaje 8 Mayo 2011, 22:24 pm
por Segurida
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines