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

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

Achei a solução nesse post.

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