У меня есть C++ exe; по конкретному сценарию мне нужно остановить exe и запустить его снова. Это должно быть сделано из одного и того же exe, а не извне. Каков наилучший способ достичь этого?Перезапустить процесс [exe] в Windows
Мое предположение - начать новый экземпляр процесса, а затем убьет текущий процесс. Но есть ли какой-либо прямой API для этого, например RestartProcess() или что-то еще? Если нет, что вы предлагаете?
эй ржавый, просто из интереса, почему вы сделали это сообщество wiki? – andy
Было бы хорошей идеей для вас объяснить, почему вы думаете, что вам нужно это сделать - может быть лучшее и более простое решение. – 2009-07-29 11:25:28
@Neil: Не знаю о ржавчине, но я иногда реализовал очень то же самое, чтобы автоматически обновлять текущее программное обеспечение без вмешательства пользователя: программа переименовывает текущий app.exe в app_old.exe, затем загружает новый .exe и записывает его на диск как app.exe, а затем вызывает CreateProcess(). При сбое старая версия все еще запускает новый app.exe, переименовывает app_old.exe в app.exe и регистрирует ошибку. При очевидном успехе он просто закрывается. Но если у вас есть лучшее решение, сообщите нам! (Я сделал это очень похоже на sharptooth explain => +1 к нему. :) – Reunanen