从 java 调用 shell,它抱怨“stty:标准输入:无效参数”
我通过 java 的 Process 类调用 shell 命令,
"stty: standard input: Invalid argument"
无论命令正确还是错误,它都会打印(也显示 shell 命令的正常输出)。如果我在 shell 中运行 shell 命令,则不会显示此类错误消息。
命令如下:{"/bin/csh", "-c", "echo hello"}
I invoke a shell command by Process class from java and it prints
"stty: standard input: Invalid argument"
no matter whether the command is right or wrong (normal output of shell command is shown too). If I run the shell command in shell, no such error message is shown.
The command is something like this: {"/bin/csh", "-c", "echo hello"}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
尝试使用 csh 的
-f
选项来禁用 .chsrc 和 .login 文件的读取:Try using the
-f
option of csh to disable the reading of the .chsrc and .login files:引用 java.lang.Process:
也许您想要 相反,java.lang.ProcessBuilder。
Quoth the documentation for java.lang.Process:
Perhaps you would like the java.lang.ProcessBuilder, instead.
你看这里吗。
我设法运行一些命令,例如 this
Have you look here.
I managed to run some commands like this
您正在从
.profile
或.bash_profile
调用stty
命令。您必须将其标准错误重定向到/dev/null
。stty 无法处理 Java 在 shell 中提供的伪 tty。
You are invoking the
stty
command from your.profile
, or.bash_profile
. You'll have to redirect its standard error to/dev/null
.stty can't deal with the pseudo-tty that Java provides in shelling out.