chiamata di sistema chiamata asincrono?

In un punto di un codice, chiamo uno strumento esterno con il sistema Call . Lavoro con Wine e programma con C.

La chiamata è così:

system("blabla.exe outfile"); 

Il comando è generato dynamicmente per cambiare il file di uscita. Alcune righe dopo provo ad aprire il file generato con fopen , ma fopen restituisce NULL .

Se cambio la chiamata al seguente, tutto funziona:

 system("blabla.exe outfile"); Sleep(2000); 

Ma non mi piace aspettare 2 secondi … E questa soluzione è pessima. Penso che il system -Call funzioni sincron? Quindi il processo secondario e tutti i suoi (file) handle dovrebbero essere chiusi dopo il system -Call, no? Sono un po ‘confuso su questo.

Grazie

system chiamata di system è sincrona, in base alla pagina man restituita al termine dell’esecuzione. Ho il sospetto che ci sia qualcosa con gli handle dei file di flush del vino.