PyQt + subprocess: окно .exe (C++) мгновенно закрывается при запуске из Python
Пытаюсь запустить скомпилированный terminal.exe (из C++) через Python-скрипт, но окно мгновенно закрывается. При этом двойной клик по .exe работает нормально.
#include <iostream>
#include <cstdlib>
int main() {
std::string input;
std::cout << "root@localhost:~$ ";
std::getline(std::cin, input);
if (input == "sprast") {
std::cout << ">> Access granted\n";
} else {
std::cout << ">> Unknown command\n";
}
system("pause"); // Добавлено для удержания окна
return 0;
}
2. Python часть (фрагмент из PyQt):
def verify_second_code(self):
if self.code_input2.text() == "25588039":
exe_path = os.path.join(os.path.dirname(__file__), "terminal.exe")
print(f"Путь к EXE: {exe_path}") # Путь корректный
if os.path.exists(exe_path):
try:
process = subprocess.Popen(
[exe_path],
creationflags=subprocess.CREATE_NEW_CONSOLE, # Пробовал разные флаги
shell=True
)
print(f"PID процесса: {process.pid}") # Процесс запускается
QTimer.singleShot(3000, self.close)
except Exception as e:
self.label.setText(f"[ ОШИБКА: {str(e)} ]")
else:
self.label.setText("[ ОШИБКА: Файл не найден ]")
Что пробовал:
Добавил system("pause") и std::cin.get() в C++ код
Использовал creationflags=subprocess.CREATE_NEW_CONSOLE
Пробовал shell=True и DETACHED_PROCESS
Проверил пути через os.path.abspath
Убедился, что terminal.exe работает при ручном запуске
Окружение:
ОС: Windows 10 x64
Python: 3.12
PyQt6
Компилятор: MinGW (ucrt64, g++ 15.1.0)
Вопрос:
Почему окно terminal.exe не остаётся открытым при запуске через subprocess.Popen(), и как это исправить?