Invoking shell from java, it complaints “stty: sta

2019-04-27 12:22发布

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"}

标签: java bash csh
4条回答
走好不送
2楼-- · 2019-04-27 12:41

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.

查看更多
够拽才男人
3楼-- · 2019-04-27 12:46

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

查看更多
小情绪 Triste *
4楼-- · 2019-04-27 12:49

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

    {"/bin/csh", "-cf", "echo hello"}
查看更多
Ridiculous、
5楼-- · 2019-04-27 12:55

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.

查看更多
登录 后发表回答