Выполнить команду 'stty raw' в том же терминале? - PullRequest
3 голосов
/ 26 декабря 2010

Я пытаюсь перевести консоль в «сырой» режим на Java.Я понимаю, что это будет работать только в UNIX.

Я использую команду stty raw

Если я ввожу команду непосредственно в терминал, она сделает то, что должна.В Java я пытаюсь установить режим следующим образом:

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

Но терминал не переходит в необработанный режим.

У меня такое ощущение, что Java просто выполняет командув виртуальном терминале в фоновом режиме или что-то, а не активный терминал.Есть ли способ сделать это?

Ответы [ 2 ]

5 голосов
/ 26 декабря 2010

Поскольку JVM перенаправляет stdio / stdout / stderr, вы можете попробовать что-то вроде этого:

String[] cmd = {"/bin/sh", "-c", "stty raw </dev/tty"};
Runtime.getRuntime().exec(cmd);

Обратите внимание, что stty (обычно) работает на stdin, а не на stdout.

0 голосов
/ 26 декабря 2010

Команда stty выполняет набор операций ioctl со стандартным вводом. Когда вы вызываете exec, вы запускаете и запускаете новый процесс.

Вы можете выбрать JNI или перейти на Java-приложение в стиле GUI вместо консоли. Черт возьми, вы можете создать свою собственную консоль Java на 100%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...