NSTask et commande ls

grisminou

Membre enregistré
27 Mai 2004
5
0
bonjour à tous, je suis débutant dans le domaine et je souhaite récupérer ler résultats d'une commande ls pour récuperer le nom des ports série.
Je n'arrive pas à utiliser le caractère générique * pour limiter le résultat du ls :

arguments = [NSArray arrayWithObjects: @"-l",@"/dev/cu*", nil];

la log me répond :
/bin/ls: /dev/cu*: No such file or directory

alors que ça fonctionne lorsque je veux un répertoire entier.

Ou est l'astuce ?
 
Cela fait longtemps que je n'ai pas fait ca mais je me souviens qu'il fallait donner le path du prog a lancer et ensuite UNIQUEMENT les arguments Je suis sous pc là donc j'ai pas la doc mais je repasserai ce soir ;)
[EDIT]Je crois que la commande est [ myNSTask setLaunchPath:@"lepath"]; [/EDIT]
 
Essaie peut-être un truc dans ce genre :

Bloc de code:
[myNSTask setLaunchPath:@"/bin/sh"];
 arguments = [NSArray arrayWithObjects:@"-c", @"/bin/ls -l '/dev/cu*'", nil];
 
grisminou a dit:
Même punition, même motif !

Sans les simples quotes ça marche...

Bloc de code:
NSTask *analyseE2=[[NSTask alloc] init];
	[analyseE2 setLaunchPath:@"/bin/sh"];
	
	[analyseE2 setArguments:[NSArray arrayWithObjects:@"-c", @"/bin/ls -l /dev/cu*", nil]];
	
	NSPipe *outPipeE2 = [NSPipe pipe];
	NSFileHandle *handleE2 = [outPipeE2 fileHandleForReading];
	
	NSString *resultE2;
	
	[analyseE2 setStandardOutput:outPipeE2];
	[analyseE2 launch];
	[analyseE2 waitUntilExit];
	[analyseE2 release];
	
	resultE2 = [[NSString alloc] initWithData:[handleE2 readDataToEndOfFile] encoding:NSASCIIStringEncoding];
	NSLog(resultE2);
 
Merci Ludopac !
Ca marche sans les simples quotes.
Je n'ai plus que 35649821639652 choses à compendre pour finir mon programme !