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(), и как это исправить?


Ответы (0 шт):