저는 C++ 응용 프로그램에 내장 된 Python을 실행 중입니다. 이 프로그램은 계산이 이루어지는 Qt GUI와 작업 QThread로 구성됩니다. 사용자는 파일에서 파이썬 스크립트를 실행하거나 파이썬 프롬프트를 시작할 수 있습니다. 둘 다 QThread에서 실행됩니다. 파이썬 스크립트가 끝나거나 파이썬 프롬프트를 종료 할 때 프로그램이 종료됩니다. 그러나 사용자가 GUI에서 종료하도록 요청한 경우에는 처리하려고합니다.C++에서 임베디드 파이썬 프롬프트를 중지하십시오.
파이썬 스크립트를 실행하는 경우 PyErr_SetInterrupt
(Stopping embedded Python 참조) 호출을 통해이를 수행 할 수 있습니다. 파이썬 인터프리터가 멈추고 정상적으로 종료 할 수 있습니다. 그러나 파이썬 프롬프트를 강제 종료하는 좋은 방법을 찾지 못했습니다.
나는 stdin
(ungetc
) 문자를 파이썬 프롬프트가 수신하지만 성공하지 못하도록하기 위해 문자를 입력 해 보았습니다. 파이썬 프롬프트가 실행되는 동안 Qt 이벤트를 잡는 데 오버로드 된 PyOS_InputHook
에서이 작업을 수행합니다.
어떤 아이디어로든 파이썬 프롬프트를 강제 종료하는 방법은 무엇입니까?
'PyErr_SetInterrput'은 파이썬 프롬프트를 종료하지 않습니다. 파이썬 프로세스를 다른 스레드로 분리하는 것은 해결책 일 수 있지만 피하려고 시도했던 복잡성이 더해졌습니다. 그것은가는 방법일지도 모른다. – Jose