системный вызов asynchron?

В одном месте в коде я вызываю внешний инструмент с системным вызовом. Я работаю с Вином и программа с C.

Вызов выглядит следующим образом:

system("blabla.exe outfile"); 

Команда динамически генерируется для изменения внешнего файла. Несколько строк позже я пытаюсь открыть сгенерированный файл с fopen , но fopen возвращает NULL .

Если я меняю вызов на следующее, все работает:

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

Но я не люблю ждать 2 секунды … И это решение очень плохое. Я думаю, что system -Call работает синхронно? Итак, subprocess все его (File-) Ручки должны быть закрыты после system -Call, а не? Я немного смущен этим.

Спасибо

system вызов синхронный, в соответствии с man-страницей, которую он возвращает после завершения выполнения. Я подозреваю, что есть что-то с ручками для промывки вина.