Problema inusitado com Runtime.getRuntime().exec(String);

1 resposta
C

Olá a todos.

Tenho um executável (ghmm9.exe) que executa com um nome de arquivo passado por linha de comando (estou usando t1.ghmm). A saída dele é a escrita de alguns arquivos.

Executei pelo terminal e tudo ok.

Então, resolvi escutar pelo Java.

Pus o meu .class junto com ghmm9.exe e t1.ghmm;

No main(String0…*:args) somente escrevi

try {

Runtime.getRuntime().exec(ghmm9.exe t1.ghmm);

} catch(Exception e) {

e.printStackTrace();

}

Deu tudo certo.

Entretanto, esse Runtime.getRuntime()… vai estar em um código de aplicação gráfica. É fato, que enquanto estiver rodando normalmente o código gráfico a JVM não encerra.

Então, quando chamei o evento de um botão o processo do ghmm9.exe foi chamado. Ela abriu os arquivos, escreveu parcialmente nos arquivos e terminou, mas, não completou a escrita nos arquivos. Somente quando encerrei a JVM (por ctrl + c) a escrita foi completa.

Qual o problema?

Em
http://www.geocities.com/caiobmartins/ghmm.zip

Estou disponibilizando um .zip com:

  • ghmm9.c (compila com gcc e borland)
    -s.dat (arquivo binário de dados que o programa usa)
    -t1.ghmm (arquivo de entrada; por linha de comando)

Obrigado a todos

1 Resposta

C

Achei a solução nesse post.

http://www.javafree.org/javabb/topic-13028-JVM+esperar+a+execucao+completa+de+Programa+externo

Criado 16 de dezembro de 2008
Ultima resposta 16 de dez. de 2008
Respostas 1
Participantes 1