ホームページ >Java >&#&チュートリアル >Java ランタイムでシェル コマンドを確実に実行するにはどうすればよいですか?
Java ランタイムでのシェルの動作の操作
Java の Runtime.exec(String) ユーティリティを使用する場合、特定のシェル コマンドの実行間に不一致が発生する可能性があります。これらの異常を理解するには、シェル操作の仕組みを詳しく調べる必要があります。
シェルの責任を理解する
シェルは、コマンドの実行をサポートする次のような重要なタスクを実行します。
実行の原因失敗
シェルに依存するコマンドは、Runtime.exec(String) を介して呼び出すと失敗する可能性があります。理由は次のとおりです。
回避策
単純だが不完全:
Runtime.exec(String[]) とコマンドをシェルインタープリタに渡すことで、直接コマンドを実行できるようになります。実行:
String myFile = "some filename.txt"; String myCommand = "cp -R '" + myFile + "' $HOME 2> errorlog"; Runtime.getRuntime().exec(new String[] { "bash", "-c", myCommand });
堅牢かつ安全:
セキュリティと堅牢性を高めるために、ProcessBuilder を使用してシェルの責任を明示的に処理します:
String myFile = "some filename.txt"; ProcessBuilder builder = new ProcessBuilder( "cp", "-R", myFile, System.getenv("HOME")); builder.redirectError(ProcessBuilder.Redirect.to(new File("errorlog"))); builder.start();
以上がJava ランタイムでシェル コマンドを確実に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。