gpt4 book ai didi

groovy - groovy shell中的中断处理

转载 作者:行者123 更新时间:2023-12-01 05:08:37 25 4
gpt4 key购买 nike

在 groovy shell 中,如果你输入:

$ groovysh
Groovy Shell (2.3.7, JVM: 1.7.0_11)
Type ':help' or ':h' for help.
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
groovy:000> (1..1234567)

并且不小心按下 Enter,您很可能会破坏当前的 session ,而没有太多希望能够继续。这是一个简单的例子 - 假设你做这样的事情:
(1..123456).collect { 'abc' * 80 }

你明白了要点——显然你可以在控制台中做一些事情,在那里你有你想要继续工作的状态。有什么方法可以告诉 groovy 停止,但不杀死 groovysh(按 Ctrl+C 执行)?

或者告诉它每次打印更少,除非要求更多?不确定有什么可能,如果有的话 - 有什么提示吗?

最佳答案

在 Windows 中 Groovysh 似乎没有将 ctrl-c 作为中断信号转发到应用程序。如果我运行这个:

while(true)Thread.sleep(1000);

或这个:
while(true);

在 groovyconsole 中它可以被中断,但是当我在 Groovysh 中做同样的事情时它不能,它只是挂起直到我终止进程。

其中一些与 groovy 用于输入的 JLine 有关,因为如果我像这样禁用 jline:
groovysh -console=false

然后 ctrl-c 杀死整个过程而不是忽略 ctrl-c。也许它正在 try catch 并转发 ctrl-c 并且转发部分出现问题?

GroovyConsole 可以轻松地“捕获” ctrl-c,因为 Windows 不会将其作为中断传递,它只是输入。对于像 Groovysh 这样的控制台应用程序,捕获 SIGINT 显然非常困难(虽然它可能是 possible ,我没有亲自尝试过)也许这就是他们试图用 JLine 做的事情,只是在 Windows 中有一个错误实现或尚未完成...

修复这个问题会很好,但除非我可以像 GroovyConsole 一样编写自己的 repl GUI,它可以像 Groovysh 一样保持它的状态。

关于groovy - groovy shell中的中断处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26641675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com