Problème d'arguments avec TProcess et le binaire "ls" sous Linux
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)."
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
Code:
1 2 3 4 5
| /dev/sda
/dev/sda1
/dev/sda2
/dev/sdb
/dev/sdb1 |
etc.)
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 :
Code:
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). |
Voilà...
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