다음을 통해 공유


콘솔 컨트롤 처리기

각 콘솔 프로세스에는 프로세스가 Ctrl+C, Ctrl+BREAK 또는 Ctrl+CLOSE 신호를 받을 때 시스템에서 호출하는 자체 컨트롤 처리기 함수 목록이 있습니다. 처음에는 각 프로세스에 대한 컨트롤 처리기 목록에 ExitProcess 함수를 호출 하는 기본 처리기 함수만 포함됩니다 . 콘솔 프로세스는 SetConsoleCtrlHandler 함수를 호출하여 추가 HandlerRoutine 함수를 추가하거나 제거할 수 있습니다. 이 함수는 다른 프로세스에 대한 제어 처리기 목록에 영향을 주지 않습니다. 콘솔 프로세스는 제어 신호를 수신할 때 처리기 중 하나가 TRUE를 반환할 때까지 마지막으로 등록된 첫 번째 호출 기준으로 처리기 함수를 호출합니다. 처리기가 TRUE를 반환하지 않으면 기본 처리기가 호출됩니다.

함수의 dwCtrlType 매개 변수는 수신된 제어 신호를 식별하고 반환 값은 신호가 처리되었는지 여부를 나타냅니다.

처리기 루틴을 실행하기 위해 명령줄 클라이언트 프로세스 내에서 새 스레드가 시작됩니다. 이 스레드의 시간 제한 값 및 작업에 대한 자세한 내용은 HandlerRoutine 함수 설명서에서 확인할 수 있습니다.

컨트롤 처리기 함수의 예는 컨트롤 처리기 함수 등록을 참조 하세요.

AttachConsole, AllocConsole 또는 FreeConsole을 호출하면 클라이언트 프로세스의 제어 처리기 테이블이 초기 상태로 다시 설정됩니다.