찾다

 >  Q&A  >  본문

c++ - 프로그램을 닫을 때 SetConsoleHandler를 호출하면 WINAPI 예외가 발생합니다.

멀티스레딩을 사용하여 일부 데이터를 얻은 다음 이를 배열에 저장하는 프로그램을 작성했습니다. 그런 다음 콘솔 프로그램을 닫으면 이벤트가 트리거되고 이 이벤트에서 배열의 데이터를 파일에 썼습니다. .
하지만 이 프로그램을 10분 미만 실행하면 파일 쓰기가 정상적으로 되는데, 20분 이상 프로그램을 종료하면 일부 파일만 출력되고 프로그램이 저절로 종료됩니다.

다음은 이러한 장소와 관련된 코드입니다.
이것은 주 함수에서 SetConsoleCtrlHandler에 대한 호출입니다

으아악

특정 기능 구현입니다

으아악

이 문제를 겪어본 사람이 있나요?
이거 버퍼랑 관련이 있는 건가요? 왜냐하면 직관적으로 시간이 지날수록 더 많은 데이터를 받게 될 수도 있기 때문입니다.

仅有的幸福仅有的幸福2778일 전679

모든 응답(1)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-05-16 13:26:41

    CTRL_CLOSE_EVENT에는 시간 초과 메커니즘이 있으므로 데이터를 쓰는 데 시간이 얼마나 걸리더라도 5초 후에 프로그램이 종료됩니다.
    대신 CTRL_C_EVENT를 사용할 수 있습니다.

    회신하다
    0
  • 취소회신하다