Bonsoir,
je viens vers vous car là je suis face à un mystère...
Je sais utiliser TProcess, lui passer une liste de paramètres et en récupérer la sortie (je récupère ainsi les données SMART de mes disques, par exemple), mais je voudrais automatiser un peu plus et je veux donc construire une liste de disques avec la commande ls -1 /dev/sd? dont la sortie ressemblera à ça, dans un terminal :
Le problème c'est que ça ne fonctionne pas, je me récupère une erreur "2" qui signifie "if serious trouble (e.g., cannot access command-line argument)."
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /dev/sda /dev/sdb
Si je remplace le "?" par "a" ou "b" ça fonctionne très bien, si je mets "*" j'ai la même erreur (au lieu de récupérer
etc.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdb1
Je ne comprends pas, on dirait que le passage de caractères spéciaux (* et ? sont-ils vraiment "spéciaux" ?) met la pagaille...
Un bout de code :
Voilà...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 with aProcess do // composant posé sur la form begin Executable := '/bin/ls'; // nom du binaire Parameters.Add('-1'); // pour aff. en colonne Parameters.Add('/dev/sd?'); // avec sda ça passe, avec * ou ? --> erreur 2 ! Options := Options + [poWaitOnExit, poUsePipes, poDefaultErrorMode]; Execute; iExitStatus := ExitStatus; end; showmessage(inttostr(iExitStatus)); // 2=if serious trouble (e.g., cannot access command-line argument).
Si quelqu'un a une idée, je la lirai avec grand plaisir parce que là, je suis coincé
Environnement : Debian Wheezy 32 bits, Lazarus 1.0.10 FPC 2.6.2
Partager