从 java 调用 shell,它抱怨“stty:标准输入:无效参数”

发布于 2024-08-26 12:41:09 字数 247 浏览 7 评论 0原文

我通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

仅此而已 2024-09-02 12:41:10

尝试使用 csh 的 -f 选项来禁用 .chsrc 和 .login 文件的读取:

    {"/bin/csh", "-cf", "echo hello"}

Try using the -f option of csh to disable the reading of the .chsrc and .login files:

    {"/bin/csh", "-cf", "echo hello"}
铜锣湾横着走 2024-09-02 12:41:10

引用 java.lang.Process

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

也许您想要 相反,java.lang.ProcessBuilder

Quoth the documentation for java.lang.Process:

"The methods that create processes may
not work well for special processes on
certain native platforms, such as
native windowing processes, daemon
processes, Win16/DOS processes on
Microsoft Windows, or shell scripts.
The created subprocess does not have
its own terminal or console."

Perhaps you would like the java.lang.ProcessBuilder, instead.

诗酒趁年少 2024-09-02 12:41:10

你看这里吗。
我设法运行一些命令,例如 this

Have you look here.
I managed to run some commands like this

并安 2024-09-02 12:41:09

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

stty blah blah blah 2>/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 blah blah blah 2>/dev/null

stty can't deal with the pseudo-tty that Java provides in shelling out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文