2012-07-09 5 views
2

Windows API에는 SetConsoleMode 함수가 있습니다. 모드 값 중 ENABLE_PROCESSED_INPUT 값을 이해할 수 없습니다. CTRL+C 시스템에 의해 처리되고 입력 버퍼에 있지 않다는 은 MSDN 문서SetConsoleMode 플래그에서 ENABLE_PROCESSED_INPUT의 의미

ENABLE_PROCESSED_INPUT : value (0x0001) 말한다. 입력 버퍼가 ReadFile 또는 ReadConsole으로 읽혀지면 다른 컨트롤 키가 시스템에서 처리되고 ReadFile 또는 ReadConsole 버퍼에 반환되지 않습니다. ENABLE_LINE_INPUT 모드도 활성화되어있는 경우 백 스페이스, 캐리지 리턴 및 줄 바꿈 문자는 시스템에서 처리합니다.

이 플래그를 설정하면 CTRL+C이 입력 버퍼에 저장되지 않습니다 (시스템에서 처리하기 때문에). 그렇지 않으면 (CTRL+C은 입력 버퍼에 저장됩니다)? 설명은 나에게 혼란 스럽다. 누구든지 나에게 설명 할 수 있니?

+1

무엇이 당신의 질문입니까? 텍스트에 "CTRL + C가 시스템 **에서 처리되고 ** 입력 버퍼에 없습니다 **"라고 분명히 표시됩니다. –

답변

3

그것은 Ctrl 키 + C가 입력 버퍼 ENABLE_PROCESSED_INPUT 플래그가 설정된 경우 (그 대신에, 시스템은 그것을 처리하고 콘솔에서 실행되는 프로세스에 SIGINT 신호를 전송한다)에 배치되지 않는다는 것을 의미한다.

같은 문제가 ENABLE_LINE_INPUT 플래그에 적용이 설정되면, 문자 backspace, carriage returnline feed 같이 입력 버퍼에 배치되지 않고, 버퍼 및 처리 단부 외 문자를 소거 시스템 (의해 처리 자동으로 행).

0

ENABLE_PROCESSED_INPUT : value (0x0001) : CTRL+C은 시스템에 의해 처리되고 입력 버퍼에 배치되지 않은 입니다.

그렇기 때문에 특수 기호가 시스템에 의해 처리되므로 입력 버퍼에 아무것도 들어 가지 않습니다.