콘솔 응용 프로그램의 구성자 역할을하는 대화 상자가 있습니다. 이 대화 상자의 임무는 사용자에게 위젯 세트 (콘솔 응용 프로그램에서 지원하는 옵션을 미러링)를 제공하는 것입니다. 사용자가 "시작"버튼을 클릭하면 콘솔 응용 프로그램의 이름과 매개 변수로 QProcess가 만들어지고 시작됩니다. GUI에서 위젯의 상태. 프로세스를 성공적으로 시작할 수 있고 모든 것이 잘 작동합니다. 그러나 프로세스를 종료하려면 콘솔 응용 프로그램을 정상적으로 종료해야합니다. 즉, 파일을 닫고 데이터를 플러시하고 장치를 닫은 다음 종료해야합니다.Windows에서 QProcess를 사용하여 시작한 프로세스에 Ctrl + C 이벤트 보내기
QProcess :: close()를 사용하면 응용 프로그램이 즉시 종료되고 응용 프로그램을 정상적으로 종료 할 수 없습니다.
나는 Win32 GenerateConsoleCtrlEvent(CTRL_C_EVENT, Q_PID::dwProcessId)
을 사용하여 동일한 것을 보냈다. 위의 API는 0이 아닌 값 (성공을 나타냄, 실패시 0을 반환 함)을 반환하지만 프로세스는 계속 실행됩니다.
정상적인 종료를 위해 QProcess 신호를 보내는 방법을 알려 준 사람이 누구입니까? 아니면 다른 방법이 있습니까?
문제의 응용 프로그램이 실제로 Ctrl-C를 정상적으로 처리하고 있습니까? 소스 코드가 있습니까? –
예. 내 코드는 Ctrl + C 및 Ctrl + Break 이벤트를 처리합니다. – Bharath