Maison > Java > javaDidacticiel > Comment exécuter de manière fiable des commandes redirigées à l'aide de Runtime.exec() de Java ?

Comment exécuter de manière fiable des commandes redirigées à l'aide de Runtime.exec() de Java ?

Susan Sarandon
Libérer: 2024-12-21 19:50:11
original
447 Les gens l'ont consulté

How to Reliably Execute Piped Commands Using Java's Runtime.exec()?

Exécuter des commandes redirigées avec Runtime.exec()

En Java, Runtime.exec() est couramment utilisé pour exécuter des commandes shell. Cependant, tenter d'exécuter une commande délimitée par des tubes comme "ls /etc | grep release" directement à l'aide de Runtime.exec() peut entraîner un comportement inattendu en raison de différences entre plates-formes dans la gestion des tubes.

Solution :

1. Créer un script :

Pour garantir une exécution de canal indépendante de la plate-forme, écrivez un script qui exécute le pipeline souhaité et exécutez le script au lieu des commandes séparées. Par exemple :

// script.sh
ls /etc | grep release
Copier après la connexion

Exécutez ensuite le script à l'aide de Runtime.exec() :

String command = "/bin/sh script.sh";
Process child = Runtime.getRuntime().exec(command);
Copier après la connexion

2. Utiliser l'invocation du shell :

Une autre approche consiste à invoquer le shell directement et à transmettre la commande délimitée par des barres en tant qu'argument unique. Ceci peut être réalisé en utilisant le code suivant :

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

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

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal