Bonjour,
J'ai un petit problème assez récurrent dans mon application...
Je dois effectuer des commandes shell, à savoir un mount et un umount. (j'ai également dû faire des iptables dans un autre projet mais j'ai contourné le problème).
Voici ma méthode :
Code :
Sélectionner tout - Visualiser dans une fenêtre à part
Code :
- cmdShell = "mount " + ligne + " " + cheminDisque;
- try{
- p = Runtime.getRuntime().exec(cmdShell);
- }catch(IOException e){
- Logger.getLogger().error("Erreur lors du montage d'une partition de disque" );
- }
|
Mon problème, c'est que de temps en temps, les commandes shell ne sont pas exécutée. Le code est bien exécuté comme il faut, mais la commande n'a aucun effet.
Il ne s'agit pas d'une erreur dans la commande ou autre, puisque lancée plusieurs fois, la commande s'exécute. Je suis donc obligé de faire une boucle pour vérifier la presence ou non de données dans le repertoire ce qui me permet de savoir si le disque est monté. Tant que la commande n'a pas été approuvée, on boucle.
voici un exemple de resultat :
mount /dev/sda1 /media/disqueRecup/
on demonte
on demonte
on demonte
on demonte
mount /dev/sda3 /media/disqueRecup/
on demonte
mount /dev/sdb1 /media/disqueRecup/
disque trouve
on peut voir que le mount se fait à chaque fois, (ce qui n'est pas toujours le cas) mais que les umount ne passe pas tout le temps.. pour le premier mount, il n'y a pas moins de 4 tentatives pour que la commande umount passe...
J'obtiens le résultat que je veux avec ma boucle (technique que j'ai utilisé pour le iptables dans un autre projet) mais je trouve ça vraiment crade de devoir réitérer la commande jusqu'à ce qu'elle fonctionne...
Y a t-il une autre méthode pour exécuter du shell ? Y a-t-il quelqu'un qui sait pourquoi ce phénomène se produit ?
N'hésitez pas si vous avez la moindre informations, car cette erreur est totalement illogique à mes yeux !
Merci beaucoup