Вызывая оболочку от Java, это жалобы “stty: стандартный вход: Недействительный аргумент”

Я вызываю команду оболочки классом Процесса от Java, и это печатает

"stty: standard input: Invalid argument" 

неважно, ли команда является правильной или неправильной (нормальный вывод команды оболочки показывают также). Если я выполняю команду оболочки в оболочке, никакое такое сообщение об ошибке не показывают.

Команда - что-то вроде этого: {"/bin/csh", "-c", "echo hello"}

6
задан T3 H40 supports Monica 31 October 2016 в 10:03
поделиться

4 ответа

Попробуйте использовать параметр -f в csh, чтобы отключить чтение файлов .chsrc и .login:

    {"/bin/csh", "-cf", "echo hello"}
4
ответ дан 8 December 2019 в 18:34
поделиться

Процитируйте документацию для java.lang.Process :

"Методы, которые создают процессы, могут плохо работать для специальных процессов на определенных собственных платформах, таких как собственные оконные процессы, процессы-демоны , Win16 / Процессы DOS в Microsoft Windows или сценарии оболочки. Созданный подпроцесс не имеет собственного терминала или консоли. "

Возможно, вам нужен java .lang.ProcessBuilder вместо этого.

1
ответ дан 8 December 2019 в 18:34
поделиться

Вы посмотрите сюда . Мне удалось запустить несколько команд вроде this

0
ответ дан 8 December 2019 в 18:34
поделиться

Вы вызываете команду stty из вашего .profile или .bash_profile. Вам придется перенаправить ее стандартную ошибку на /dev/null.

stty blah blah blah 2>/dev/null

stty не может справиться с псевдо-tty, которую Java предоставляет при выполнении shelling out.

8
ответ дан 8 December 2019 в 18:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: