ホームページ >Java >&#&チュートリアル >「Runtime.exec(String)」が失敗するのはなぜですか? Java でシステム コマンドを確実に実行するにはどうすればよいですか?
Runtime.exec(String) は、Java プログラムからシステム コマンドを実行する手段を提供します。ただし、特定のコマンドは成功する一方で、他のコマンドは失敗したり、予期しない動作をしたりするなど、実行結果に不一致が発生する場合があります。この記事では、これらの異常の根本的な理由を調査し、信頼性の高いコマンド実行のための代替アプローチを検討します。
提供される基本的なサービスに依存するとコマンドが失敗します。シェルによって実行されますが、Runtime.exec(String) はこれを使用しません。これらのサービスには次のものが含まれます:
コマンドは、上記のシェル機能のいずれかを使用するたびに失敗します。一般的なシナリオには、次のようなシナリオが含まれます。
-スペースまたは特殊文字を含むファイル名
-ワイルドカードまたはグロブ
-入出力リダイレクト
-環境変数またはコマンド展開
これらの異常を回避し、コマンドを確実に実行するには、2 つの主要なアプローチが存在します。
シェルへの委任 (単純)ただし欠陥があります):
オプションは 1 つこれは、必要なサービスをすべて処理する bash などのシェルに実行を委任することです。ただし、このアプローチはセキュリティ リスクを引き起こし、堅牢性を損なう可能性があります。
シェルの置換 (安全で堅牢):
より安全で堅牢なアプローチは、シェルの責任を引き受けることです。 。これには、Unix 実行モデル、シェルによって提供されるサービス、およびそれらをプログラムで複製する方法を理解することが含まれます。 ProcessBuilder は、単語の分割、変数の展開、リダイレクトを手動で処理することでこれを実現する手段を提供します。
以上が「Runtime.exec(String)」が失敗するのはなぜですか? Java でシステム コマンドを確実に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。