CTRL+C在jline2中是如何处理的
How is CTRL+C handled in jline2
我很难理解 CTRL+C 在 jline2 中是如何处理的。我在 consoleReader.readline
中发现如果 handleUserInterrupt
设置为 true 将抛出异常。但是我想知道在抛出这个异常之前,CTRL+C是如何被捕获和解释的(而不是退出程序)?
UserInterruptException
将仅从 ConsoleReader.readLine
方法之一抛出,并且仅当用户按下 CTRL+C 和 handleUserInterrupt
设置为真(通过调用 consoleReader.setHandleUserInterrupt(true)
)。
在 UNIX 平台上
仅当 ConsoleReader
的终端是 UnixTerminal
的实例(UNIX 平台的默认终端)时,它的 disableInterruptCharacter
方法在 readLine
是叫。此方法通过向系统执行适当的命令(通过使用 stty
).在readLine
方法returns之前,它调用了终端的enableInterruptCharacter
方法,它启用了CTRL+的默认行为C。
这意味着 CTRL+C 的默认行为仅在 readLine
方法执行时被禁用。
我很难理解 CTRL+C 在 jline2 中是如何处理的。我在 consoleReader.readline
中发现如果 handleUserInterrupt
设置为 true 将抛出异常。但是我想知道在抛出这个异常之前,CTRL+C是如何被捕获和解释的(而不是退出程序)?
UserInterruptException
将仅从 ConsoleReader.readLine
方法之一抛出,并且仅当用户按下 CTRL+C 和 handleUserInterrupt
设置为真(通过调用 consoleReader.setHandleUserInterrupt(true)
)。
在 UNIX 平台上
仅当 ConsoleReader
的终端是 UnixTerminal
的实例(UNIX 平台的默认终端)时,它的 disableInterruptCharacter
方法在 readLine
是叫。此方法通过向系统执行适当的命令(通过使用 stty
).在readLine
方法returns之前,它调用了终端的enableInterruptCharacter
方法,它启用了CTRL+的默认行为C。
这意味着 CTRL+C 的默认行为仅在 readLine
方法执行时被禁用。