我正在尝试将控制台置于Java中的“原始”模式。我知道这只适用于UNIX。
我正在使用命令stty raw
如果我直接在终端中键入命令,它会执行它应该执行的操作。在Java中,我尝试设置这样的模式:
Runtime.getRuntime().exec("stty raw");
但是终端没有进入原始模式。
我有一种感觉,这是因为Java只是在后台的虚拟终端中执行命令,而不是活动终端。有没有办法做到这一点?
答案 0 :(得分:5)
由于JVM重定向stdin / stdout / stderr,你可能会尝试这样的事情:
String[] cmd = {"/bin/sh", "-c", "stty raw </dev/tty"};
Runtime.getRuntime().exec(cmd);
请注意,tty(通常)在stdin而不是stdout上运行。
答案 1 :(得分:-1)
stty命令对标准输入执行一组ioctl操作。当你调用exec时,你正在分叉并执行一个新进程。
您的选择是JNI或切换到GUI样式的Java应用程序而不是控制台。哎呀,你可以建立自己的100%Java'控制台'。