Я пытаюсь создать функциональность программы, написанной на C ++, чтобы перезапустить себя. Для этого я создаю командный файл, который убивает запущенный процесс и запускает его снова. Поэтому, когда программа должна перезапуститься, она вызывает системную функцию для запуска этого .bat-файла.
Он отлично работает в моей локальной тестовой среде, но производственная среда, в которой должна запускаться эта программа, - Windows Server 2012. В производственной среде, когда я запускаю файл .bat вручную (двойной щелчок по файлу .bat), он отлично работает - запущенная программа убивается и затем запускается снова. Проблема в том, что когда программа вызывает системную функцию для запуска .bat, процесс завершается нормально, но при повторном запуске возникает много ошибок из программы (эта программа работает как сервер TCP - который не может начать «слушай» в этом случае).
Код в программе для запуска летучей мыши следующий:
system("restartGS.bat");
Содержимое летучей мыши следующее:
taskkill /F /IM GameServer.exe
START GameServer.exe
Как подсказал @Gerhard Barnard в комментариях, я попытался удалить / F TaskKill и команду запуска, как следует (что дает точно такую же проблему):
taskkill /IM GameServer.exe && GameServer.exe
Это общая проблема, связанная с используемой здесь логикой? Что я мог сделать, чтобы попытаться решить эту проблему?
Заранее спасибо.