WinAPI를 사용하여 C++에서 콘솔 다중 프로세스 응용 프로그램을 작성하고 있습니다. 따라서 Dispatcher (예 : 'Parent')와 클라이언트 (예 : 'Child') 프로세스가 있습니다. 두 프로세스는 동기화됩니다. 즉, 세마포, 이벤트, 뮤텍스 및 파이프를 사용합니다 (모두 표준 WinAPI 핸들입니다). 사용자가 "exit"
명령을 입력하면 응용 프로그램이 중지됩니다. 사용자가 그렇게하면 디스패처 프로세스에서 자식에게 알린 다음 하위가 리소스를 해제하고 다른 종료 전 절차를 올바르게 종료합니다. 그러나 나에게 귀찮은 일이있다. 사용자가 창 닫기 버튼을 누르면 어떻게 될까? 그렇다면 가까운 이벤트에 귀를 기울여야하며 내 리소스 공개 절차를 수행해야합니다. 창 닫기 이벤트를 처리하는 가장 쉬운 방법은 무엇입니까?콘솔 응용 프로그램의 WinAPI에서 창 닫기 이벤트를 처리하는 가장 쉬운 방법은 무엇입니까?
3
A
답변
3
CTRL_CLOSE_EVENT (및 필요한 경우 CTRL_C_EVENT)를 감지하는 console handler routine을 작성하고 SetConsoleCtrlHandler을 사용하여 처리기 루틴을 프로세스에 추가하십시오.
1
정말 클라이언트 프로세스가 충돌하거나 작업 관리자를 통해 종료되는 것과 다르지 않습니다. 당신도 그것에 탄력적이어야합니다. 상위 프로세스에서 얻을 수있는 궁극적 인 신호는 클라이언트의 프로세스 핸들이 전달된다는 것입니다.
다른 핸들과 함께 WaitForMultipleObjects를 사용하여이를 감지하십시오.
관련 문제
- 1. 응용 프로그램의 창 닫기 (OSX)
- 2. AlertDialog 닫기 이벤트를 처리하는 방법은 무엇입니까?
- 3. MVVM에서 이벤트를 처리하는 가장 좋은 방법은 무엇입니까
- 4. 제어 문자를 사용하는 콘솔 응용 프로그램의 출력을 처리하는 방법은 무엇입니까?
- 5. OPTIONS 메서드를 처리하는 가장 쉬운 방법은 무엇입니까?
- 6. Blackberry에서 응용 프로그램의 배경 이미지를 설정하는 가장 쉬운 방법은 무엇입니까
- 7. Windows Forms 응용 프로그램의 콘솔 창 숨기기
- 8. ICommand에 창 닫기 이벤트를 바인딩합니다.
- 9. 콘솔 응용 프로그램의 System.Drawing.Color
- 10. Ember.js에서 이벤트를 처리하는 가장 좋은 방법은 무엇입니까?
- 11. 콘솔 응용 프로그램의 세션을 설정하는 방법은 무엇입니까?
- 12. PowerShell에서 콘솔 닫기 이벤트를 잡는 방법?
- 13. NSDocument 응용 프로그램의 진행로드 창
- 14. WinForms 프로그램의 콘솔 창 표시
- 15. 창 양식의 숨겨진/표시 된 이벤트를 잡거나 처리하는 방법은 무엇입니까?
- 16. 젠킨스 콘솔 출력에 응용 프로그램의 콘솔 출력을 추출하는 방법은 무엇입니까?
- 17. 브라우저에서 창 닫기 이벤트를 감지하는 표준 방법은 무엇입니까?
- 18. 콘솔 닫기 이벤트를 잡는 방법? 내 문제의
- 19. facebook/google 로그인을 처리하는 가장 쉬운 방법
- 20. ASP.NET MVC에서 콘텐츠 URL을 처리하는 가장 적절하고 쉬운 방법은 무엇입니까?
- 21. 추가 창 닫기 (PApplet)
- 22. 시작 콘솔 응용 프로그램 창
- 23. C# 콘솔 콘솔 응용 프로그램 닫기
- 24. 액션 스크립트/플래시에서 창 닫기 이벤트를 잡습니다.
- 25. 브라우저 창 닫기 이벤트를 캡처하는 javascreipt
- 26. C# 실행 콘솔 응용 프로그램의 수명주기는 무엇입니까?
- 27. 콘솔 응용 프로그램의 winform
- 28. 콘솔 응용 프로그램의 색상
- 29. C++ 응용 프로그램의 콘솔
- 30. 콘솔 응용 프로그램의 WriteableBitmapEx?