Comment exécuter un processus système avec Java

Java

gnu

linux

Java en soi comprend une large collection de classes avec les principales fonctionnalités que nous pouvons avoir besoin, si vous ne l’offrez pas Dans l’API, il est très possible qu’il y ait une bibliothèque qui le fournit. Mais parfois, on nous donne peut-être le cas qu’une commande de commande renvoie les informations ou exécute l’action dont nous avons besoin. Il peut s’agir d’une commande du système GNU / Linux, Windows ou Mac OS X ou un script dans Java, Python, Ruby ou autre langage de programmation. Grâce à la classe Process et ProcessBuilder, il nous est possible de lancer un processus de commande de commande et d’accéder à sa sortie standard, sortie standard et sortie d’erreur.

La classe de processus représente le processus que nous lancons, nous avons deux Manières d’obtenir une référence Cette classe, une avec Runtime.GetInstance (). Exec () et une autre avec la classe ProcessBuilder avec les deux, il sera possible d’établir des variables d’environnement, du répertoire de travail ou de rediriger l’entrée et la sortie. Obtenu Référence à une instance de processus avec la méthode GetInputtream () Nous allons lire la sortie standard du processus, avec GetOrrRinPutStream () la sortie d’erreur et avec GetOutPutStream () Nous pouvons envoyer du contenu à l’entrée standard. D’autres méthodes utilitaires nous permettront de savoir si le processus est toujours en vie avec Isalive (), obtenir le code de sortie avec ExitValue (), attendez qu’il se termine avec Waitfor (). Enfin, avec destroy (), nous pouvons finir brusquement le processus.

Ils ne sont pas de la remarquable nouvelle de Java 8 mais de cette version, vous pouvez définir une attente maximale pour la résiliation du processus, les variables d’environnement et Le répertoire de travail. Et plus de petits changements mais très utiles car ceux-ci auront été ajoutés à d’autres classes de l’API.

Ceci est possible de faire tout ce que le système peut faire en fonction des commandes installées ou installées et Cela signifie qu’il est à la portée de Java dans un système GNU / Linux, la puissance de votre ligne de commande. Par exemple, supposons que nous voulions savoir dans un programme Java, le temps qui a été lancé un système qui serait utile si nous voulons mettre en œuvre certains types de métriques de surveillance avec actionneur de démarrage à ressort. Java n’a pas de méthode qui fournit ces informations dans votre API, cependant, à GNU / Linux, nous pouvons connaître ces données à l’aide du système de fichiers virtuel accessible dans / PROC, en particulier dans le fichier / proc / uptime. Ce fichier contient deux chiffres le premier est celui qui nous intéresserait être le nombre de secondes puisque le système démarré et la deuxième fois qu’il est resté au repos. Le deuxième numéro dans un système avec un processeur avec plusieurs noyaux physiques ou logiques est susceptible d’être supérieur au premier.

1 2 
$ cat /proc/uptime 1488.79 5666.60 

« >

uptime.sh

Ce serait le programme Java de savoir combien de temps un système GNU / Linux a été lancé. Premièrement, le processus est créé, il devrait se terminer et son code de sortie est obtenu, la sortie de processus est obtenue (entrée pour le programme), le résultat est traité et les secondes que le système a commencé.

<

« c9ef456ec7″>
 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 

maain.java

« c9ef456ec7″>
1 2 
 » Fcc66b3214 « >

main.out

Exécuter une commande de commande nous donne accès à un nouveau monde de possibilités Bien que si nous pouvons mieux avoir une API disponible pour appeler la fonctionnalité que nous souhaitons au lieu d’une lecture et d’une écriture d’intégration plus fragiles à la sortie, à l’erreur et à l’entrée du processus. . Dans l’article suivant, basé sur est-ce que je vais commenter comment envoyer un courrier électronique à Java signé numériquement avec GPG, en appliquant de la même manière que nous pouvons obtenir le pays et la ville basé sur l’adresse IP dans une application Web.

<

Terminal

Le code source de la source complète peut le télécharger à partir du référentiel BiXe Blog hébergé dans Github et testez-le sur votre ordinateur exécutant la commande suivante: ./gradlew run

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *