JavaからProcessクラスでシェルコマンドを呼び出すと、出力されます
"stty: standard input: Invalid argument"
コマンドが正しいか間違っているかに関係なく(シェルコマンドの通常の出力も表示されます)。シェルでshellコマンドを実行すると、そのようなエラーメッセージは表示されません。
コマンドは次のようなものです。{"/bin/csh", "-c", "echo hello"}
、、またはstty
からコマンドを呼び出しています。標準エラーをにリダイレクトする必要があります。.profile
.bash_profile
/dev/null
stty blah blah blah 2>/dev/null
sttyは、Javaがシェルアウトで提供する疑似ttyを処理できません。
cshのオプションを使用して-f
、.chsrcファイルと.loginファイルの読み取りを無効にしてみてください。
{"/bin/csh", "-cf", "echo hello"}
java.lang.Processのドキュメントを引用します。
「プロセスを作成するメソッドは、ネイティブウィンドウプロセス、デーモンプロセス、MicrosoftWindowsのWin16/ DOSプロセス、シェルスクリプトなど、特定のネイティブプラットフォームの特別なプロセスではうまく機能しない場合があります。作成されたサブプロセスには、独自のターミナルやコンソールがありません。 。」
代わりに、 java.lang.ProcessBuilderが必要な場合があります。
ここを見てください。私はなんとかこのようないくつかのコマンドを実行することができました