Zunächst müssen wir die Ausführungsberechtigungen des Benutzers für das Skript erhöhen, das heißt,
Die Codekopie lautet wie folgt:
String cmdstring = "chmod a+x test.sh";
Process proc = runTime.getRuntime (). Exec (cmdstring);
proc.waitfor ();
cmdstring = "bash test.sh";
proc = runTime.getRuntime (). exec (cmdstring);
// Achten Sie auf die folgenden Operationen
String ls_1;
BufferedReader bufferedReader = new bufferedReader (neuer InputStreamReader (proc.getInputStream ());
while ((ls_1 = bufferedReader.readline ())! = null);
bufferedReader.close ();
proc.waitfor ();
Warum brauchen Sie die obige Operation?
Der Grund ist: Die Ausgabe des ausführbaren Programms kann relativ groß sein, während der Ausgangspuffer des Lauffensters begrenzt ist, was dazu führt, dass die Wartezeit ständig blockiert wird. Die Lösung besteht darin, die von der von Java bereitgestellten Prozessklasse bereitgestellten GetInputStream- und GeterRorStream -Methoden zu verwenden, damit die Java -Virtual -Maschine die Standardausgabe und die Fehlerausgabe des aufgerufenen Programms abfangen und den Inhalt im Ausgangspuffer vor der Karteiung lesen kann () Befehl.
Ich hoffe, Sie können diesen Artikel mögen.