6

我通过 java 中的 Process 类调用 shell 命令并打印

"stty: standard input: Invalid argument" 

不管命令是对是错(也显示了shell命令的正常输出)。如果我在 shell 中运行 shell 命令,则不会显示此类错误消息。

命令是这样的:{"/bin/csh", "-c", "echo hello"}

4

4 回答 4

8

您正在从, 或调用stty命令。您必须将其标准错误重定向到..profile.bash_profile/dev/null

stty blah blah blah 2>/dev/null

stty 无法处理 Java 在脱壳时提供的伪 tty。

于 2010-03-29T08:18:46.913 回答
4

尝试使用-fcsh 选项禁用读取 .chsrc 和 .login 文件:

    {"/bin/csh", "-cf", "echo hello"}
于 2010-03-29T09:09:08.163 回答
1

引用java.lang.Process的文档:

“创建进程的方法可能不适用于某些本机平台上的特殊进程,例如本机窗口进程、守护进程、Microsoft Windows 上的 Win16/DOS 进程或 shell 脚本。创建的子进程没有自己的终端或控制台。”

也许您更喜欢java.lang.ProcessBuilder

于 2010-03-29T08:24:24.530 回答
0

你看这里吗。我设法运行了一些这样的命令

于 2010-03-29T08:48:33.980 回答