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…
[]'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