在同一个终端执行'stty raw'命令?

时间:2010-12-25 21:44:44

标签: java unix console terminal

我正在尝试将控制台置于Java中的“原始”模式。我知道这只适用于UNIX。

我正在使用命令stty raw

如果我直接在终端中键入命令,它会执行它应该执行的操作。在Java中,我尝试设置这样的模式:

Runtime.getRuntime().exec("stty raw");

但是终端没有进入原始模式。

我有一种感觉,这是因为Java只是在后台的虚拟终端中执行命令,而不是活动终端。有没有办法做到这一点?

2 个答案:

答案 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'控制台'。