Ciao a tutti.
Sto davvero impazzando.
Mi succede la seguente cosa: ho un eseguibile che si chiama GMLP. Accetta due parametri: la dimensione e un seed.
per ogni dimensione >= 29 le due chiamate system(comando) non funzionano, mi restituiscono -1.
E non ho la piu' pallida idea del perché. L'unica cosa che so è che il programma occupa molta memoria.
La parte dove uso le system è questa:
int ATSP_Concorde::Solve()
{
string remove ("rm -f ");
remove.append(FILETSP SOLEXT);
cerr << remove << endl;
if (system ("rm -f file_tsp_temp.sol"))
// if (system(remove.c_str()) != 0)
{
cerr << "norimozione "<< "FILE SOLEXT" << endl;
exit(-1);
}
printTSPLIB(FILETSP);
string concorde(getenv("WHICH_CONCORDE"));
if (concorde.empty())
{
cerr << "WHICH_CONCORDE=NULL: dov'e' concorde?\n";
exit(-1);
}
concorde.append(FILETSP);
cerr << "aspett 5 secondi\n";
sleep(5);
cerr << "eseguo " << concorde << endl;
// int check =
system(concorde.c_str());
/* if (check != 0)
{
cerr << "CONTROLLA WHICH_CONCORDE, errore: " << check << endl;
exit(1);
}
*/
cerr << " aspetto altri 5 secondi\n";
sleep(5);
cerr << "estraggo soluzione";
extractSol();
return 1;
}
Come vedete, nella parte incriminata, non entrano nemmeno le dimensioni.
Eppure è cosi': il codice gira, l'unica cosa che si blocca e la funzione system ();
infatti se per esempio la prima system la sposto dopo la funzione printTSPLIB,
quest'ultima viene eseguita correttamente.
Se la dimensione che gli do è inferiore a 29 allora il codice gira perfettamente.
Vi prego, datemi unaiuto. Ormai sono all'esaurimento!