Reconhecer uma instancia do programa já aberto

5 respostas
J

Olá pessoal, ká estou eu outra vez.

Preciso saber se há alguma forma, se existir, de saber se minha aplicação já está rodando na máquina. Isto para evitar que o mesmo programa seja aberto duas ou mais vezes.
Se exitir alguma forma de fazer isto, poderiam me dizer qual a melhor forma de faze-lo?

Obrigado

5 Respostas

G

Não conheço algo nativo do java pra fazer isso. Depende do SO, mas quando eu programava em c++ fazia o controle via arquivos .LOCK…

P

Nunca precisei de fazer isso mas já vi por aqui mais que uma vez a sugestão de abrir um socket para uma porta local no inicio da aplicação. Se a porta já estiver em uso é porque outra instância já está em execução.

G

Eu não faria por socket, vai que alguem em um dia resolve usar essa mesma porta e a desgraça simplesmente não funciona ??
No inicio da execução do aplicativo verifique se existe um arquivo com o nome da aplicação por exemplo, se não tiver vc cria se tiver vc encerra a aplicação. Só tome cuidado nos tratamento de exceptions, que possam resultar em uma finalização da aplicação, de deletar o arquivo em questão antes de encerrar o aplicativo…

J

Ou de não deletar…
Ou então, usar um arquivo batch (.bat ou .sh) que verifica com chamadas ao sistema se há um processo com o nome do programa antes de chamar a aplicação em si.

Geralmente eu escrevo um executável escrito em C++ chamando a aplicação java pelo jre. Fazendo desta forma eu creio que dê pra controlar o processo da aplicação no sistema… Enfim, vou dar uma pesquisada nos processos em C.

Obrigado

W

Guitar_Men:
Eu não faria por socket, vai que alguem em um dia resolve usar essa mesma porta e a desgraça simplesmente não funciona ??
No inicio da execução do aplicativo verifique se existe um arquivo com o nome da aplicação por exemplo, se não tiver vc cria se tiver vc encerra a aplicação. Só tome cuidado nos tratamento de exceptions, que possam resultar em uma finalização da aplicação, de deletar o arquivo em questão antes de encerrar o aplicativo…

Ou de não deletar…
Ou então, usar um arquivo batch (.bat ou .sh) que verifica com chamadas ao sistema se há um processo com o nome do programa antes de chamar a aplicação em si.

Criado 18 de agosto de 2010
Ultima resposta 18 de ago. de 2010
Respostas 5
Participantes 4