Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > перезапуск программы |
Автор: admsasha 24.1.2012, 03:37 |
Есть программа, которая автоматически обновляется и требуется сделать её самоперезапуск. Я попробовал через system(), под linux, вроде как, проблем нет. А вот под windows создается консольное окно, которое не закрывается даже после выхода из программы. Какие еще способы есть, либо какой выход из этого есть ? |
Автор: borisbn 24.1.2012, 09:06 |
Под Windows есть как минимум 3 варианта: 1) system( "start prog_name.exe" ); 2) http://msdn.microsoft.com/en-us/library/windows/desktop/bb762153(v=vs.85).aspx( ... ); 3) http://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx( ... ); |
Автор: admsasha 24.1.2012, 09:12 |
borisbn, спасибо, попробую. |
Автор: xvr 24.1.2012, 11:11 |
Под Windows есть засада - вы не сможете переписать исполняемый файл программы пока она работает. Если у вас система обновления и сама программа одно и то же, то будут проблемы ![]() |
Автор: 500mhz 24.1.2012, 11:27 | ||||
не красивое решение ) из "учебника"
делаем ребут |
Автор: borisbn 24.1.2012, 11:37 |
500mhz, ребут программы или системы ? Если второе, то скажите, только честно, Вам нравятся программы, которые требуют ребута системы ? |
Автор: 500mhz 24.1.2012, 11:56 |
borisbn системы ребут. ну можно и без батника, сохранить ехешник с другим именем,запустить его, закончить свой процесс, запущеный ехе скопирует себя с нужным именем. |
Автор: xvr 24.1.2012, 13:38 |
Он не сможет себя удалить, в отличие от батника |
Автор: 500mhz 24.1.2012, 13:48 |
xvr ну может я сумбурно написал имеем процесс 1.ехе, он скачивает 2.ехе процесс 1.ехе запускает 2.ехе и завершается 2.ехе копирует себя как 1.ехе |
Автор: Sahab 24.1.2012, 13:56 |
и после этого процесс 1.exe удаляет файл 2.ехе... имхо с батником попроще вроде выходит.... |
Автор: 500mhz 24.1.2012, 14:10 |
Sahab на вкус и цвет все фломастеры разные ))) |
Автор: Sahab 24.1.2012, 14:37 |
согласен) |
Автор: xvr 24.1.2012, 17:22 |
А кто сотрет 2.exe ? |
Автор: bsa 24.1.2012, 17:36 |
Вообще-то, система не запрещает переименовывать исполняющиеся файлы. Таким образом алгоритм меняется на: 1.exe загружает 2.exe 1.exe переименовывает 1.exe в 1.old 1.old переименовывает 2.exe в 1.exe 1.old запускает 1.exe (как вариант, со специальным параметром) 1.exe ждет пока 1.old завершит работу 1.old завершает работу 1.exe удаляет 1.old есть второй вариант: 1.exe загружает 2.exe 1.exe запускает 2.exe 1.exe завершает работу 2.exe переименовывает 1.exe в 1.old 2.exe переименовывает 2.exe в 1.exe |