[RESOLVIDO]Como criar um processo que continue executando?

5 respostas
P

Quando eu crio um processo da forma

Process p = Runtime.getRuntime().exec("java -jar Daemon.jar");

Se o processo pai (que criou) termina o processo filho também
termina.

Existe alguma forma de criar um processo e mesmo que o programa
que criou termine ele continue rodando?

5 Respostas

E

No caso do Unix/Linux, você normalmente usa o comando do shell “nohup”.

http://www.uniriotec.br/~morganna/guia/nohup.html

Não se esqueça que para rodar comandos do shell, você precisa usar “/bin/bash -c”, ou coisa parecida, no Runtime.exec.

P

Obrigado entanglement,
vou testar o “nohup” aqui.

No Windows, alguém sabe como?

E

No Windows não há relação pai-filho*, portanto você não precisa se preocupar com isso.

  • Obviamente, se o processo tiver uma tela gráfica ou um console e se o usuário se deslogar, o processo terá de ser encerrado. Para o processo ficar em background, sobrevivendo ao logout, ele precisa ser um serviço do Windows, mas nesse caso ele não pode ter interação nenhuma com o usuário.
P

Ok, estou satisfeito com as respostas.
O “nohup” funcionou de forma esperada aqui.
Valeu entanglement.

P

Só pra fechar,
Linux

Runtime.getRuntime().exec("/bin/bash -c 'nohup java -jar Daemon.jar'");

Windows

Runtime.getRuntime().exec("cmd.exe /c start /b Daemon.jar");
Criado 3 de março de 2010
Ultima resposta 3 de mar. de 2010
Respostas 5
Participantes 2