Для этого вам нужен поток. Смотрите здесь: http://msdn.microsoft.com/en-us/library/y6h8hye8(v=vs.80).aspx В настоящее время вы пишете свой код в «основном потоке» (который обычно также является кодом вашего фрейма).Таким образом, если вы запустите что-то, что требует времени, чтобы завершить, это остановит выполнение вашего основного потока, если вы запустите это во втором потоке, ваш основной поток продолжит.
Обновление: я пропустилчасть, которую вы хотите выйти немедленно.execl () скорее всего то, что вам нужно.
#include <unistd.h>
int main(){
execl("C:\\path\\to\\updater.exe", (const char *) 0);
return 0;
}
Предложенный CreateProcess () также может быть использован, но execl соответствует POSIX и сделает ваш код более переносимым (если вам все равно).
#include <unistd.h>
extern char **environ;
int execl(const char *path, const char *arg, ...);
Обновление: протестировано на Win-7 с использованием gcc в качестве компилятора