我从java调用Process类的shell命令并打印
"stty: standard input: Invalid argument"
无论命令是对还是错(也显示了shell命令的正常输出)。如果我在shell中运行shell命令,则不会显示此类错误消息。
命令如下:{"/bin/csh", "-c", "echo hello"}
答案 0 :(得分:7)
您正在调用stty
或.profile
中的.bash_profile
命令。您必须将其标准错误重定向到/dev/null
。
stty blah blah blah 2>/dev/null
stty无法处理Java在shelling中提供的伪tty。
答案 1 :(得分:4)
尝试使用csh的-f
选项禁用.chsrc和.login文件的读取:
{"/bin/csh", "-cf", "echo hello"}
答案 2 :(得分:1)
指出java.lang.Process的文档:
“创建流程的方法可以 不适用于特殊流程 某些本机平台,例如 本机窗口进程,守护进程 进程,Win16 / DOS进程 Microsoft Windows或shell脚本。 创建的子进程没有 它自己的终端或控制台。“
也许你想要java.lang.ProcessBuilder,而不是。
答案 3 :(得分:0)