Я пишу небольшую утилиту обновления, которая вызывается из основной программы. Основная программа заканчивается сразу после вызова и позволяет обновить копию всех обновленных файлов, а затем она должна перезапустить основную программу. Однако этот последний бит начинает давать мне головную боль.Запустите приложение и забудьте в переносном режиме
Я могу запустить программу с std::system
(я знаю, небезопасно, но портативен) просто отлично, но затем программа обновления просто висит там, ожидая завершения основной программы. Я искал способы позвонить по телефону пожар & забудьте, и потоки кажутся лучшими.
Однако это:
std::system("app");
висит Апдейтер, как он ожидает возвращения из system
. В то время как это:
std::thread(std::system, "app").detach();
ни вариант
std::thread t(std::system, "app");
t.detach();
, кажется, сделать что-нибудь. Но когда я присоединяюсь нить:
std::thread t(std::system, "app");
t.join();
это запустить приложение, но все еще ждет его возвращения, как и в исходном коде. Почему не может отключить приложение?
Какого уровень переносимости вам нужно (например, какие платформы представляют интерес)? –
@JasonR Основное приложение - приложение Qt, и я нацелен на 3 платформы Qt: рабочий стол, linux и mac ... – Resurrection
Не подходит QProcess? –