Как корректно использовать функцию system при компиляции из GCC?
Столкнулся с ошибкой:
По логике программы запускается .bat файл - `system("file.bat");`, если компилировать программу под VisualStudio 2022, то все работает корректно.
Сам по себе .bat файл работает корректно (если запускать из cmd).
Если же компилировать программу с помощью GCC (с++20), то .bat файл запускается, но не закрывается. Т.е. .bat отрабатывает полностью, но при этом просто ожидает какой-то команды завершения. exit в конце .bat скрипта стоит.
GCC в Windows работает из-под MSYS2. Все пакеты обновлены до последних версий.
Ни разу не сталкивался с подобной проблемой, ошибок никаких не выдаёт, через dbg так же ничего не выдаёт, так как ощущение, что виснет на стороне cmd.
MVV, hitakiri, Только надо запускать cmd.exe /с file.bat
Смотрите справку по ключам: cmd /?
Сам по себе батник - это не исполняемый файл, его выполняет cmd.exe, т.е. батник может и завершаться при этом, но cmd.exe может продолжать ждать команд - и это ее стандартное поведение, которое в вашем случае не нужно и надо его изменить ключами.
Вообще функция system() из стандартной библиотеки реально не используется, это какая-то затычка для студентов, которым лень разбираться как решать вопросы правильно.
Думаю дело тут всё же в компиляторе. Т.к. в справке по функции есть пометка :
Винда не POSIX система, к ней ваша цитата не относится. Дело не в компиляторе. system - находится в стандартной библиотеке, она уже скомпилирована и обычно не вами.