


Pourquoi « Runtime.exec() de Java produit-il des résultats inattendus avec les tuyaux ?
Pipes et Runtime.exec() en Java
Considérez le code Java suivant :
String commandf = "ls /etc | grep release"; try { Process child = Runtime.getRuntime().exec(commandf); child.waitFor(); InputStream i = child.getInputStream(); byte[] b = new byte[16]; i.read(b, 0, b.length); System.out.println(new String(b)); } catch (IOException e) { e.printStackTrace(); System.exit(-1); }
Le programme le résultat est :
/etc: adduser.co
Cependant, lorsqu'il est exécuté à partir du shell, il est correctement affiche :
lsb-release
Comportement des tuyaux multiplateformes
Comme mentionné dans la question, le comportement des tuyaux n'est pas multiplateforme. Les créateurs Java ne peuvent pas garantir que les canaux fonctionneront de manière cohérente sur différentes plates-formes.
Solutions alternatives
Pour résoudre ce problème, envisagez les options suivantes :
- Exécuter un script : Écrivez un script qui exécute le pipeline de commandes souhaité et exécutez le script au lieu de le séparer commandes.
- Exécution du shell : Utilisez la commande sh pour exécuter les commandes redirigées dans l'environnement du shell :
String[] cmd = { "/bin/sh", "-c", "ls /etc | grep release" }; Process p = Runtime.getRuntime().exec(cmd);
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

VSCode Windows 64 bits Télécharger
Un éditeur IDE gratuit et puissant lancé par Microsoft

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Version Mac de WebStorm
Outils de développement JavaScript utiles

SublimeText3 Linux nouvelle version
Dernière version de SublimeText3 Linux