在Windows API中,有SetConsoleMode函数。
在模式值中,我无法理解ENABLE_PROCESSED_INPUT
值。
MSDN文档说
ENABLE_PROCESSED_INPUT : value (0x0001)
:
CTRL+C
由系统处理,不会放在输入缓冲区中。如果正在由ReadFile
或ReadConsole
读取输入缓冲区,则系统会处理其他控制键,而不会在ReadFile
或ReadConsole
缓冲区中返回。如果还启用了ENABLE_LINE_INPUT
模式,则系统将处理退格,回车符和换行符。
这是否意味着当设置此标志时,CTRL+C
未放入输入缓冲区(因为它由系统处理)?或者不是(CTRL+C
放在输入缓冲区中)?这个解释让我感到困惑..请有人向我解释一下吗?
答案 0 :(得分:3)
这意味着如果设置了ENABLE_PROCESSED_INPUT
标志, Ctrl + C 将不会被放入输入缓冲区(相反,系统将处理它并且将SIGINT
信号发送到控制台中运行的进程。
相同的行为适用于ENABLE_LINE_INPUT
标志:如果已设置,则backspace
,carriage return
和line feed
等字符不会放入输入缓冲区并进行处理由系统(从缓冲区中删除字符并自动处理行尾)。
答案 1 :(得分:0)
ENABLE_PROCESSED_INPUT
:value (0x0001)
:CTRL+C
由系统处理,未放入输入缓冲区。
所以基本上是的,没有任何东西进入输入缓冲区,因为特殊符号由系统处理。