Я вызываю команду оболочки классом Процесса от Java, и это печатает
"stty: standard input: Invalid argument"
неважно, ли команда является правильной или неправильной (нормальный вывод команды оболочки показывают также). Если я выполняю команду оболочки в оболочке, никакое такое сообщение об ошибке не показывают.
Команда - что-то вроде этого: {"/bin/csh", "-c", "echo hello"}
Попробуйте использовать параметр -f
в csh, чтобы отключить чтение файлов .chsrc и .login:
{"/bin/csh", "-cf", "echo hello"}
Процитируйте документацию для java.lang.Process :
"Методы, которые создают процессы, могут плохо работать для специальных процессов на определенных собственных платформах, таких как собственные оконные процессы, процессы-демоны , Win16 / Процессы DOS в Microsoft Windows или сценарии оболочки. Созданный подпроцесс не имеет собственного терминала или консоли. "
Возможно, вам нужен java .lang.ProcessBuilder вместо этого.
Вы посмотрите сюда . Мне удалось запустить несколько команд вроде this
Вы вызываете команду stty
из вашего .profile
или .bash_profile
. Вам придется перенаправить ее стандартную ошибку на /dev/null
.
stty blah blah blah 2>/dev/null
stty не может справиться с псевдо-tty, которую Java предоставляет при выполнении shelling out.