Cum să rulați un proces de sistem cu Java

IV id = „8239627134”

95e55AF58d ” >

Linux

Java de la sine include o gamă largă de clase cu principalele funcționalități pe care le putem avea nevoie, dacă nu o oferi În API este foarte posibil ca exista o bibliotecă care o oferă. Dar, uneori, ni se oferă cazul că o comandă de comandă returnează informațiile sau efectuează acțiunea de care avem nevoie. Poate fi o comandă a sistemului GNU / Linux, Windows sau Mac OS X sau un script în Java, Python, Ruby sau Alte limbi de programare. Prin procesul de proces și procesumilder este posibil ca noi să lansăm un proces de comandă de comandă și să accesăm intrarea standard, ieșire standard și ieșire de eroare.

Clasa de proces reprezintă procesul pe care l-am lansat, avem două Modalități de a obține o referire la această clasă, una cu Runtime.Getinstance (). Exec () și altul cu clasa de procesbuilder cu atât va fi posibilă stabilirea variabilelor de mediu, directorului de lucru sau redirecționarea intrării și ieșirii. Obținut referitor la o instanță de proces cu metoda Getinputstream () Vom citi ieșirea standard a procesului, cu geterorinputstream () ieșirea de eroare și cu GetoutputStream () putem trimite conținut la intrarea standard. Alte metode de utilitate ne vor permite să știm dacă procesul este încă în viață cu ISALIV (), obțineți codul de ieșire cu ExitValue (), așteptați ca acesta să se încheie cu așteptarea (). În cele din urmă, cu distrugerea () putem termina brusc procesul.

Nu sunt din știrile remarcabile de Java 8 Dar din această versiune Puteți seta o așteptare maximă pentru terminarea procesului, variabilele de mediu și Directorul de lucru. Și mai multe schimbări mici, dar foarte utile, deoarece acestea vor fi adăugate la alte clase ale API.

Acest lucru este posibil să faceți tot ce poate face sistemul conform comenzilor instalate sau pot fi instalate și Aceasta înseamnă că este la îndemâna lui Java într-un sistem GNU / Linux Puterea liniei de comandă. De exemplu, să presupunem că vrem să știm într-un program Java, timpul care a fost inițiat un sistem care ar fi util dacă dorim să implementăm un anumit tip de valori de monitorizare cu servomotorul de boot de primăvară. Java nu are o metodă care să ofere aceste informații în API, cu toate acestea, în GNU / Linux Putem cunoaște aceste date utilizând sistemul accesibil de fișiere virtuale din / proc, în special în fișierul / proc / uptime. Acest fișier conține două numere Primul este cel care ne-ar interesa fiind numărul de secunde de când sistemul a început și a doua oară când a rămas în repaus. Cel de-al doilea număr dintr-un sistem cu un procesor cu mai multe nuclee fizice sau logice este probabil mai mare decât primul.

div id = „

1 2 

Acesta ar fi programul Java pentru a afla cât timp a fost pornit un sistem GNU / Linux. În primul rând, procesul este creat, este de așteptat să se termine, iar codul său de ieșire este obținut, este obținut ieșirea procesului (intrare pentru program), rezultatul este procesat și al doilea pe care sistemul a pornit.

iv id = „

iv id =” 2E82C65EC9 „
package io.github.picodotdev.blogbitix.javaprocess; import java.io.BufferedReader; import java.io.InputStreamReader; import java.math.BigDecimal; import java.text.MessageFormat; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; public class Main { public static void main(String args) throws Exception { // Iniciar el proceso ProcessBuilder builder = new ProcessBuilder().command("cat", "/proc/uptime"); Process process = builder.start(); // Alternativa a ProcessBuilder //Process process = Runtime.getRuntime().exec(new String { "cat", "/proc/uptime" }); // Esperar a que termine el proceso y obtener su valor de salida process.waitFor(10, TimeUnit.SECONDS); int value = process.exitValue(); if (value != 0) { throw new Exception(MessageFormat.format("Código de salida con error (%d)", value)); } // Obtener la salida del proceso BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8")); String result = br.lines().collect(Collectors.joining("\n")); br.close(); // Obtener el tiempo desde el inicio del sistema String seconds = result.split(" "); System.out.printf("Segundos desde el inicio del sistema: %.2f", new BigDecimal(seconds)); } }

iv id = „F4F704B954”

div id =” 50c9f82bb5 „

main.out

Rulați o comandă de comandă ne oferă acces la o nouă lume a posibilităților, deși dacă putem avea mai bine un API disponibil pentru a invoca funcționalitatea pe care o dorim, în loc de o citire și scriere a integrării mai fragile la ieșire, eroare și intrare a procesului . În următorul articol bazat pe este acest lucru voi comenta despre modul de a trimite un e-mail în Java digital semnat cu GPG, aplicând acest lucru același lucru putem obține țara și orașul pe baza adresei IP într-o aplicație web.

Terminal

Codul sursă complet sursă îl poate descărca de la depozitul Bix Blog găzduit în GitHub și testați-l pe computerul dvs. care rulează următoarea comandă:
./gradlew run

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Segundos desde el inicio del sistema: 3115,77