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?
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
pmlm
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
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…
J
joselmocs
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
WellingtonRamos
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.