Использование system()
для создания нового процесса делает это, сначала запуская новый интерпретатор команд, который затем, в свою очередь, выполняет команду, переданную system()
.
Интерпретатор команд открывает окно консоли.
Таким образом, чтобы избежать открытия таких окон консоли, вам нужно избегать запуска интерпретатора команд. Чтобы выполнить последнее, попробуйте функцию из семейства spawn
(http://msdn.microsoft.com/en-us/library/20y988d2.aspx) или используйте API-интерфейс win32 CreateProcess()
(http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425), чтобы напрямую запустить ваше приложение.
Побочным эффектом может быть то, что ваше приложение запускается быстрее, а также использует меньше системных ресурсов.
Фактически вышеупомянутые решения не будут работать для системных вызовов, которым явно нужен интерпретатор команд, как в одном из ваших примеров (copy src dst
).