Shell-Verhalten in Java Runtime manipulieren
Bei der Verwendung des Java-Dienstprogramms Runtime.exec(String) können Diskrepanzen zwischen der Ausführung bestimmter Shell-Befehle auftreten. Um diese Anomalien zu verstehen, müssen wir uns mit der Mechanik von Shell-Operationen befassen.
Shell-Verantwortlichkeiten verstehen
Shells führen wichtige Aufgaben aus, die die Befehlsausführung unterstützen, darunter:
Ursachen für Ausführungsfehler
Shell-abhängige Befehle können sein schlägt fehl, wenn es über Runtime.exec(String) aufgerufen wird, weil:
Problemumgehungen
Einfach, aber unvollkommen:
Verwenden von Runtime.exec(String[]) und Die Übergabe des Befehls an einen Shell-Interpreter ermöglicht einen direkten Befehl Ausführung:
String myFile = "some filename.txt"; String myCommand = "cp -R '" + myFile + "' $HOME 2> errorlog"; Runtime.getRuntime().exec(new String[] { "bash", "-c", myCommand });
Robust und sicher:
Um die Sicherheit und Robustheit zu erhöhen, handhaben Sie Shell-Verantwortlichkeiten explizit mit 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();
Das obige ist der detaillierte Inhalt vonWie kann ich Shell-Befehle mit Javas Runtime zuverlässig ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!