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
DDDoriginal
2024-12-20 14:52:10245parcourir

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);

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));

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);

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:
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