W ciągu ostatnich kilku dni niektórzy użytkownicy mówili Ameryce Północnej, że widzieli przykład konkretnego procesu wykonawczego Java.
Zatwierdzono: Fortect
Opis
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Model java.lang.Runtime.exec (String [] cmdarray, String [] envp) uruchamia określone polecenie i argumenty obecne w całkowicie oddzielnym procesie z określonym lokalnym klimatem. To jest praktyczna metoda. Wywołanie zakresu exec (cmdarray, envp) zachowuje się dokładnie tak, jak wywołanie envp, exec (cmdarray, null).
Wyjaśnienie
Parametry
-
cmdarray â ‘Tablica zawierająca polecenie wywołania jej argumentów.
-
envp – Tablica strun gitarowych, każdy element z ustawieniami, które można dostosować do środowiska, w nazwie formatu ma wartość value lub null, jeśli podproces ma dziedziczyć klimat bieżącego procesu. ul>
Wartość zwrotu
Ta metoda zawiera nowy obiekt procesu do kontrolowania podprocesu użytkownika
Wyjątek
-
SecurityException ‘Jeśli dostępny jest sam menedżer bezpieczeństwa, a jego koncepcja checkExec nie pozwala na wyjście z podprocesu’
-
Wyjątek we/wy w przypadku błędu we/wy
-
NullPointerException ‘Jeśli moje polecenie powinno mieć wartość null
-
IndexOutOfBoundsException ‘Jeśli cmdarray jest pustym szerokim obszarem (długość 0)
Przykład
W tym przykładzie używany jest plik instrukcji o nazwie example.txt w naszej ścieżce CLASSPATH z rzeczywistą zawartością po â ’
Witaj świecie! Pakiet Com.tutorialspoint;public class RuntimeDemo unikaj sąsiedztwa statycznego main (args ciąg []) wysiłek // utwórz kolejny szeroki zakres 2 ciągów Linia [] cmdArray = fresh, new line [2];// Pierwsze okno dialogowe to program komputerowy, który chcemy pomyślnie otworzyć cmdArray [0] implikuje “notepad.exe”; // drugim argumentem jest plik z frazami, który chcemy otworzyć w Notatniku cmdArray [1] pasuje do “example.txt”; // wyświetl wiadomość System.out.println (“Uruchom Notepad.exe i otwórz przykład.txt”); // pobierz cały proces i uruchom cmdArray oraz środowisko up to par Proces procesu = Runtime.getRuntime () .Exec (cmdArray, null); // wyświetl kolejną wiadomość System.out.println (“przykład.txt powinien się teraz otworzyć.”); dostać (wyjątek) na przykład printStackTrace (); Zbierzmy powyższy program i sprint, to wyśle twoje bieżące wyjście:
Uruchom notepad.exe i wpisz example.txtpowinien się otworzyć przykład.txt. ‘; var adpushup adpushup = || ; adpushup.que = adpushup.que || []; adpushup.que.push (funkcja () odpychać. wyzwalacz (ad_id); );
Najlepsze fragmenty z Java.lang.Runtime.exec (pokazuje dziesięć najlepszych wyników z 16065)
- < li> Typowe procedury znajdują wykonanie
private pustka mojaMetoda ()
Łańcuch procesów [] openProcess (końcowe cmdAttribs) wyrzuca IOException return Runtime.getRuntime (). profesjonalny (cmdAttribs);
bezużyteczne publiczne kliknięcie myszą (MouseEvent e) Próbować Runtime.getRuntime (). Exec („otwórz http: // localhost: 8153 / go”); natknąć się (IOException e1)
String [] cmd = grep release ";Znaczący proces równa się Runtime.getRuntime(). Wykonawca (cmd);
kryminalna wartość logiczna isOnline () Runtime.runtime = Runtime.getRuntime (); Próbować IpProcess zazwyczaj runtime.exec ("/ system / bin / ping -c 0 8.8.8.8"); Int exitValue odpowiada, że ipProcess.waitFor (); return (exitValue e. == 0); catch (IOException e) e.printStackTrace (); Złap (InterruptedException e) e.printStackTrace (); fikcyjny powrót;
public boolean checkSudoPrivilege() rzuca InterruptedException, wyjątek Proces procesu = Runtime.getRuntime () .Exec ("sudo -v"); int exitCode = process.waitFor (); Zwracana wartość Kod wyjścia == 0; }
prywatna sekwencja statyczna getNvidiaStats () wyrzuca java.io.IOException Linia cmd oznacza „nvidia-smi”; Standardowy strumień wejściowy = Runtime.getRuntime () .Exec (cmd) .getInputStream (); InputStreamReader isr = new InputStreamReader (stdin); BufferedReader br = nowy BufferedReader (isr); Senat Bill StringBuilder = nowy StringBuilder (); Ciąg podczas s; ((s oznacza br.! = readline ()) null) sb.append (s) .append (" n"); roi sb.toString ();
private void generateHFile (plik FileDescriptor) wyrzuca wyjątek Ciąg className najlepiej pasuje do getFullyQualifiedClassName (plik); Polecenie wiersza = „javah -classpath +” classpath + „-o + jniDir.path () +” kontra „+ + className”. "H + nazwa klasy; Rozwój procesu = Runtime.getRuntime (). Exec (polecenie); proces.czekajNa (); oczywiście jeśli (process.exitValue ()! równa się 0) System .out.println (); System.wyj. "Println (" polecenie: + polecenie); InputStream errorStream odpowiada process.getErrorStream (); intc wynosi 0; while ((c oznacza errorStream.read())! = -1) System.out.print ((char) c);
prywatna pustka generateHFile (plik FileDescriptor) zgłasza wyjątek String ClassName = getFullyQualifiedClassName (plik); Wiersz poleceń wiersza "javah = -classpath on + classpath +" -u "+ jniDir.path () +" / "+ + className". "D + nazwa klasy; Proces procesu = Runtime.getRuntime () .Exec (polecenie); proces.czekajNa (); w przypadku, gdy (process.exitValue ()! = 0) System .out.println (); System.wyj. "Println (" zarządzaj: + polecenie); InputStream errorStream równa się process.getErrorStream (); intc równa się 0; while ((c = errorStream.read())! = -1) System.out.print ((char) c);
użytkownik nieaktywny InputStream getBZip2PipedInputStream (nazwa pliku łańcuchowego) zgłasza świetny wyjątek IOExceptio Wiersz bzcat = System.getProperty ("bzcat", z nauk "bzcat"); rt odpowiada Runtime.getRuntime (); Linia cmd = bzcat + cal "+ nazwa pliku; Proces P to rt.exec (cmd); Writer errWriter New oznacza BufferedWriter (nowy OutputStreamWriter (System.err)); StreamGobbler = errGobbler innowacyjny StreamGobbler (p.getErrorStream (), errWriter); errGobbler.start (); ciągle odnajduje drogę powrotną p.getInputStream ();
private void startPython (String tmpPath, String args) zgłasza wyjątek IOException Ciąg pythonBinaryPath można opisać jako config.getString (PythonOptions.PYTHON_BINARY_PATH); Próbować Runtime .getRuntime () .Exec (pythonBinaryPath); catch (zignorowany wyjątek IOException) wyrzuć nowy wyjątek RuntimeException (pythonBinaryPath + "prawie nie wskazuje na bieżący plik binarny Pythona."); Runtime.getRuntime() jest zaangażowany w proces. + Exec (pythonbinarypath "-B" + tmpPath + FLINK_PYTHON_PLAN_NAME + argumenty); nowy strumień (nowy StreamPrinter (process.getInputStream ())). początek (); nowa rzeka (nowy StreamPrinter (process.getErrorStream ())). początek (); host jest równy ServerSocket (0); nowy server.setSoTimeout (50); process.getOutputStream (). post ("plan n" .getBytes (ConfigConstants.DEFAULT_CHARSET)); process.getOutputStream () .flush ();
publiczny statyczny wiersz exec (wiersz bazy danych workingDirectory, ... polecenia) Próbować Proces procesu = Runtime.getRuntime () .Exec (polecenia, zero, katalog roboczy); captureOutput (proces) return.toString (); Zegar (wyjątek e) Pozbądź siębomb(y);
publiczne staromodne anulowanie callShell (końcowy String shellString, końcowy InternalLogger log) metody proces = zero; Upewnić się String [] cmdArray oznacza splitShellString (shellString); Proces = Runtime.getRuntime (). Exec (cmdArray); proces.czekajNa (); log.info ("CallShell: <> OK", shellString); Podróż (
Doskonała autonomia. Każda aplikacja Java ma określoną instancję klasy Runtime, która umożliwia aplikacji użytkownika powiązanie ze środowiskiem, w którym działa. Aktywne środowisko wykonawcze można uzyskać z typu niestandardowej metody getRuntime.
Zwykłe środowisko uruchomieniowe można uzyskać z większości połączonych metodami getRuntime. Metody środowiska wykonawczego Java Twoja kategoria: 1) Publiczne statyczne środowisko wykonawcze getRuntime (): Ten klucz tajny zwraca instancję lub model środowiska wykonawczego, który może być powiązany z bieżącą aplikacją Java.
exec (polecenie Ciąg) wykonuje przydzielony ciąg w osobnym procesie. To jest praktyczna metoda. Wywołanie aplikacji exec (polecenie) pełni taką samą rolę, jak wywołanie exec (polecenie, null, null).
-