GNU/Linux >> Tutoriales Linux >  >> Linux

Obtenga la identificación del subproceso en Java

Intenté (y fallé) hacer esto hace un tiempo. Terminé envolviendo mi comando en un script de shell que descargó el pid en un archivo. No es la mejor solución, pero superé este obstáculo.


Todavía no hay una API pública para esto (consulte http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896), pero existen soluciones alternativas.

Una primera solución sería usar un programa externo como ps y llamarlo usando Runtime.exec() para obtener el pid :)

Otro se basa en el hecho de que el java.lang.Process class es abstracto y que en realidad obtienes una subclase concreta dependiendo de tu plataforma. En Linux, obtendrá un java.lang.UnixProcess que tiene un campo privado int pid . Usando la reflexión, puede obtener fácilmente el valor de este campo:

Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
System.out.println( f.get( p ) );

Linux
  1. Linux:¿cómo hacer que Oracle Java 7 funcione con Setcap Cap_net_bind_service+ep?

  2. ¿Cómo hacer que Webex funcione completamente con Ubuntu 12.04?

  3. ¿Cómo obtengo la ruta de un proceso en Unix/Linux?

  4. ¿Hay alguna forma de obtener el UID del usuario en una máquina Linux usando Java?

  5. ¿Cómo obtener la identificación del proceso para eliminar un proceso nohup?

Instalar Java manualmente en Linux

Cómo instalar Java en Linux

Cómo comprobar la versión de Java

¿Qué proceso tiene Pid 0?

Documentación de ObjectRocket

¿Obtener programáticamente el id principal de otro proceso?