如何在Clojure中等待按键

当用户按下一个键时,我想摆脱循环。 在C中我会使用kbhit()。是否有Clojure(或Java)等价物?     
已邀请:
您正在寻找Java中(Linux?)控制台中按键的非阻塞处理。之前的一个问题提出了两个可能启用此功能的Java库。如果它不需要便携式,那么这里有一个解决方案。 基本上,
public class Foo {
  public static void main(String[] args) throws Exception {
    while(System.in.available() == 0) {
       System.out.println("foo");
       Thread.sleep(1000);
    }
  }
}
工作,但(在Linux上)只有在按下'return'之后,因为控制台输入流被缓冲并且由OS决定。这意味着您无法通过使用频道或任何其他NIO类来克服这一点。要确保控制台刷新每个字符,您需要修改终端设置。我曾经编写了一个C程序来执行该操作(修改当前终端的termios结构的ICANON标志),但我不知道如何从Java中执行此操作(但请参阅第二个链接)。 通常,您可以通过搜索“java nonblocking input”在此问题中找到更多内容。     

要回复问题请先登录注册