2017-12-28 65 views
-1

한 가지를하고 싶지만 가능하지 않습니다.분기 된 응용 프로그램 충돌 후 조치 수행

내 응용 프로그램은 콘솔 그 이후

std::cout << "appStart" << std:endl 

수행이 프레임 버퍼 (화면)에 그리는 아이 Qt는 과정에서 일부 메시지로 시작합니다. A는 내 Qt는 과정에서 실패가 있다면, 나는 그것을 캡처하고 Qt는 프로세스를 죽일 수있어, 나는 콘솔

std::cout << "app CRASH!" << std:endl 

에 메시지를 표시하고 싶지만 화면이 마지막 내용 무승부 냉동입니다 Qt에 의해 내 메시지가 화면에 표시되지 않습니다. 어떻게하면 화면을 지우고 내 메시지를보기 위해 다시 콘솔을 볼 수 있습니까?

+0

모니터링 할 하위 프로세스를 어떻게 시작하고 있습니까? [QProcess] (http://doc.qt.io/qt-5/qprocess.html)를 사용하고 있다면 정상적으로 종료했는지 또는 충돌했는지 알아보기 위해'finished()'신호를 볼 수 있습니다. (또한 Windows 10에서는 콘솔 창에서 아무 것도 강조 표시하지 않으면 창에 텍스트를 더 추가하지 못하게됩니다. 실수로 작업하지 않았는지 확인하십시오. 두 번 이상 나를 트립시킵니다.) – metal

+0

정교하게 작성하십시오. "Qt 프로세스에 오류가 발생하면 Qt 프로세스를 중단하고이를 포착 할 수 있습니다." –

+0

질문과 관련이 없습니다 ... 이것은 문제의 단순화입니다. 내 Qt 하위 프로세스가 완료되었으며 화면을 지우고 내 std : cout 메시지를 다시 보려고합니다. 이것은 가능하다? –

답변

0

마지막으로 문제를 발견했습니다. 문제는 아동 과정을 죽이는 방법이었다. 이전에 내가

SIGKILL  9 /* Kill, unblockable (POSIX). */ 

와 그래픽 처리를 폐쇄하는 과정은 화면 상태를 떠나, 모든 컨트롤없이 중단했다.

#define SIGTERM  15 /* Termination (ANSI). */ 

으로 프로세스가 올바르게 중지되고 컨트롤이 내 주 프로그램으로 반환됩니다.