Pessoal to tendo o seguinte problema. Eu criei dois executaveis(c++) para demonstrar o problema. Veja os códigos abaixo:
========
Codigo 1 - C++
int main(int argc, char* argv[])
{
ofstream out;
for (int i=0; i < 100000; i++)
{
printf("A\n");
}
out.open("hello.txt", ios::out);
out << "Testando o arquivo" << argv[1];
out.close();
return 1;
}
=======
Codigo 2 - C++
int main(int argc, char* argv[])
{
ofstream out;
for (int i=0; i < 100; i++)
{
printf("A\n");
}
out.open("hello.txt", ios::out);
out << "Testando o arquivo" << argv[1];
out.close();
return 1;
}
=======
Abaixo segue o código java para realizar a chamada do arquivo executavel do C++.
public void executeSolver()
{
try
{
Process p = Runtime.getRuntime().exec("C:\\teste\\hello bugado");
}
catch (IOException e)
{
e.printStackTrace();
}
}
Obs: Os códigos C++ diferem no número de iterações do for.
Quando no codigo Java é feita a chamada para o código 1 do C++ que possui a maior interação acontece um problema, o processo que é criado não é finalizado. Com isso o arquivo de saída não é gerado. No momento que a aplição Java é fechada o processo é fechado automaticamente e o arquivo de saída gerado.
Este problema acima não ocorre quando o número de iterações do for é menor. O processo é iniciado e finalizado logo em seguida, sendo o arquivo gerado normalmente sem ser necessario fechar a aplição Java.
Alguem sabe o que esta acontecendo? Sabem me dizer qual seria uma possível solução para este problema?
Abraço