Lancer un programme shell depuis java
Résolu/Fermé
A voir également:
- Shell java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Classic shell windows 11 - Télécharger - Personnalisation
- Java décompiler - Télécharger - Langages
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 27/06/2013 à 18:57
Modifié par KX le 27/06/2013 à 18:57
L'utilisation de la commande exec nécessite de passer les différents paramètres dans un tableau, pas dans une grande chaîne de caratères comme tu l'as fait :
Ensuite, mettre les stream dans des buffer c'est bien (quoique...) mais les lire c'est quand même mieux ! (sans oublier de les fermer aussi...)
String[] cmdArray = {"chmod","777","newnewessaiessai2.sh"}; Process proc = Runtime.getRuntime().exec(cmdArray);
Ensuite, mettre les stream dans des buffer c'est bien (quoique...) mais les lire c'est quand même mieux ! (sans oublier de les fermer aussi...)
Scanner out = new Scanner(proc.getInputStream()); while (out.hasNextLine()) System.out.println(out.nextLine()); out.close(); Scanner err = new Scanner(proc.getErrorStream()); while (err.hasNextLine()) System.err.println(err.nextLine()); err.close();La confiance n'exclut pas le contrôle
Bonjour ,
je veux te remercier pour votre aide.
Mais ,aprés l'incertion d ton code ,j'ai eu l'erreur suivante:
Error opening terminal: unknown
Puvez -vous m'aider?
merci d'avance
je veux te remercier pour votre aide.
Mais ,aprés l'incertion d ton code ,j'ai eu l'erreur suivante:
Error opening terminal: unknown
Puvez -vous m'aider?
merci d'avance
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
Modifié par KX le 28/06/2013 à 11:07
Modifié par KX le 28/06/2013 à 11:07
Je ne connais pas trop Linux, mais "chmod" n'est pas un programme, ce n'est qu'une fonctionnalité du terminal, il fait donc déjà parti des paramètres de la commande, et ne devrait pas être utilisé comme commande (ou un truc comme ça)
Il faudrait donc plutôt metre en premier argument la référence au terminal, genre :
Il faudrait donc plutôt metre en premier argument la référence au terminal, genre :
String[] cmdArray = {"/bin/bash", "chmod", "777", "newnewessaiessai2.sh"};
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
28 juin 2013 à 11:23
28 juin 2013 à 11:23
Remarque : pour cette opération en particulier (la gestion des droits sous Linux), il n'est pas nécessaire de passer par un exec, Java peut le faire directement, il faut regarder du côté de la classe java.nio.file.Files et en particulier la méthode setPosixFilePermissions(Path path, Set<PosixFilePermission> perms)
Des exemples d'utilisations de cette classe sont sur la documentation officielle :
Managing Metadata (File and File Store Attributes)
Des exemples d'utilisations de cette classe sont sur la documentation officielle :
Managing Metadata (File and File Store Attributes)