Maison > Java > javaDidacticiel > Comment puis-je exécuter des commandes Shell avec des tuyaux en Java à l'aide de « Runtime.exec() » ?

Comment puis-je exécuter des commandes Shell avec des tuyaux en Java à l'aide de « Runtime.exec() » ?

DDD
Libérer: 2024-12-20 14:52:10
original
393 Les gens l'ont consulté

How Can I Execute Shell Commands with Pipes in Java Using `Runtime.exec()`?

Travailler avec des tuyaux à l'aide de Runtime.exec()

Afin d'exécuter une commande avec des tuyaux en Java, vous pouvez suivre les étapes suivantes :

Méthode 1 : Utilisation d'un script

Fonctionnalité Pipe fait généralement partie du shell, une approche consiste donc à écrire un script et à l'exécuter à la place des commandes séparées. Voici un exemple :

String script = "ls /etc | grep release";

Process process = Runtime.getRuntime().exec("/bin/sh", "-c", script);
Copier après la connexion

Méthode 2 : Utilisation de ProcessBuilder

Une méthode alternative consiste à utiliser la classe ProcessBuilder de Java, qui offre plus de contrôle sur l'exécution de la commande. Voici comment procéder :

ProcessBuilder processBuilder = new ProcessBuilder("/bin/ls", "/etc")
                                .redirectOutput(new ProcessBuilder.Redirect().pipe())
                                .redirectErrorStream(true);

Process process = processBuilder.start();

InputStream inputStream = process.getInputStream();
byte[] buffer = new byte[16];
inputStream.read(buffer, 0, buffer.length);
System.out.println(new String(buffer));
Copier après la connexion

Méthode 3 : Utiliser des tableaux de chaînes

Enfin, vous pouvez également transmettre un tableau de chaînes à la méthode exec() , où chaque chaîne représente une commande ou un argument. Cette approche est similaire à la précédente, mais nécessite un peu plus de configuration :

String[] cmd = {
    "/bin/sh",
    "-c",
    "ls /etc | grep release"
};

Process process = Runtime.getRuntime().exec(cmd);
Copier après la connexion

En utilisant ces méthodes, vous pouvez travailler efficacement avec des canaux lorsque vous appelez des commandes shell en Java à l'aide de Runtime.exec(). N'oubliez pas que le comportement des tuyaux peut varier selon les plates-formes, alors soyez conscient des différences potentielles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal