2

在 windows API 中,有 SetConsoleMode 函数。在众数值中,我无法理解该ENABLE_PROCESSED_INPUT值。MSDN 文档说

ENABLE_PROCESSED_INPUT : value (0x0001): CTRL+C由系统处理,不放入输入缓冲区。如果输入缓冲区正在被ReadFileor读取ReadConsole,则系统会处理其他控制键,并且不会在ReadFileorReadConsole缓冲区中返回。如果ENABLE_LINE_INPUT还启用了该模式,则退格、回车和换行字符由系统处理。

这是否意味着设置此标志时,CTRL+C不会将其放入输入缓冲区中(因为它是由系统处理的)?还是其他情况(CTRL+C放置在输入缓冲区中)?这个解释让我很困惑..请任何人都可以向我解释一下吗?

4

2 回答 2

3

这意味着如果设置了标志, Ctrl+C将不会被放入输入缓冲区ENABLE_PROCESSED_INPUT(相反,系统将处理它并将SIGINT信号发送到控制台中运行的进程)。

同样的行为也适用于ENABLE_LINE_INPUT标志:如果它被设置,像backspace,carriage returnline feed之类的字符不会被放入输入缓冲区并由系统处理(从缓冲区中删除字符并自动处理行尾)。

于 2012-07-09T08:21:03.727 回答
0

ENABLE_PROCESSED_INPUT: value (0x0001):CTRL+C由系统处理,不放入输入缓冲区。

所以基本上是的,没有任何东西进入输入缓冲区,因为特殊符号是由系统处理的。

于 2012-07-09T08:18:40.817 回答