PID processo

Ae alguem poderia me dizer como faço para pegar o PID de um processo que eu executo com a classe runtime.exec ou o processbuild ?

Acho que com JMX você pode conseguir resgatar esse PID. Dá uma pesquisada na API pra ver se isso procede…
Depois posta aqui o que tu conseguir descobrir… :slight_smile:

[]'s.

JMX lol nunca ouvi isso.

Mas vou ver, bom estava pesquisando mais um pouco, vou postar minhas deduções e preciso da ajuda de quem puder.

seguinte:

import java.io.*;

public class Teste
{
	public static void main(String[] args)
	{
		try
		{
			Process p = new ProcessBuilder("gedit").start();
			BufferedReader resultado = new BufferedReader(new InputStreamReader(p.getInputStream()));
			System.out.println(System.getenv("PPID"));
			String s;
			while ((s = resultado.readLine()) != null)
				System.out.println(s);
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
		

	}
}

esse código acima executa um processo o gedit. vi tambem que a variavel de ambiente PPID guarda o parent process identifier, ou seja o pid do processo pai, mas como o gedit esta sendo executado direto pelo kernel eu deduzo que o seu PPID seja seu PID.

agora se eu tento fazer isso que esta acima ele me retorna null.

pois acho que estou tentando pegar a variavel de ambiente não do que o gedit setou e sim de algum outro.

como eu faço para pegar esse PPID que o kernel ou algum outro treco deve setar para o PID ?

Bom Dia amigo, com esse método você consegue pegar o PID, no windows funciona blz, no linux so tem que ver como ele traz o nome do processo
ainda não testei pode ser que não mude nada Blz…

[code]public long getPID() {
    String processName =
            java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
    System.out.println(processName);
    return Long.parseLong(processName.split("@")[0]);
}[/code]

Espero ter ajudado