CTRL+C在jline2中是如何处理的

How is CTRL+C handled in jline2

我很难理解 CTRL+C 在 jline2 中是如何处理的。我在 consoleReader.readline 中发现如果 handleUserInterrupt 设置为 true 将抛出异常。但是我想知道在抛出这个异常之前,CTRL+C是如何被捕获和解释的(而不是退出程序)?

UserInterruptException 将仅从 ConsoleReader.readLine 方法之一抛出,并且仅当用户按下 CTRL+ChandleUserInterrupt 设置为真(通过调用 consoleReader.setHandleUserInterrupt(true))。

在 UNIX 平台上

仅当 ConsoleReader 的终端是 UnixTerminal 的实例(UNIX 平台的默认终端)时,它的 disableInterruptCharacter 方法在 readLine 是叫。此方法通过向系统执行适当的命令(通过使用 stty).在readLine方法returns之前,它调用了终端的enableInterruptCharacter方法,它启用了CTRL+的默认行为C

这意味着 CTRL+C 的默认行为仅在 readLine 方法执行时被禁用。