NSTask et les arguments
difnet
Membre
Bonsoir,
Je tente en vain de développer une petite application permettant de générer un rapport à l'aide de System Profiler.
L'application est parfaitement fonctionnelle en shell. J'ai donc décidé d'y rajouter une interface et d'en faire une application Cocoa.
Pour ceci et après recherches, il semble que je dois utiliser la classe NSTask. Pas de soucis jusqu'à présent. Mon problème vient des "options" de la commande que je tente d'exécuter.
Voici le commande shell en question :
Voici mon code Cocoa :
Si je regarde dans la console de Xcode, je vois bien la commande qui est exécutée mais les arguments ne sont pas pris en compte.
J'ai essayé différentes méthodes trouvées sur Internet (séparer les arguments, déclaration de "args" différente, etc...) mais rien n'a fonctionné.
Quelqu'un aurait une idée?
D'avance merci.
PS: Etant débutant, je ne sais pas si le bout de code que j'ai mis est suffisant et d'avance, excusez mon vocabulaire qui peut ne pas être adapté dans certains cas, fonction, classe, méthode, instance et j'en passe. C'est un peu flou parfois ^^
Je tente en vain de développer une petite application permettant de générer un rapport à l'aide de System Profiler.
L'application est parfaitement fonctionnelle en shell. J'ai donc décidé d'y rajouter une interface et d'en faire une application Cocoa.
Pour ceci et après recherches, il semble que je dois utiliser la classe NSTask. Pas de soucis jusqu'à présent. Mon problème vient des "options" de la commande que je tente d'exécuter.
Voici le commande shell en question :
system_profiler -detailLevel full -xml > report.xml
Voici mon code Cocoa :
- (IBAction)createReport:(id)sender<br /> {<br /> NSTask *systemProfiler = [[NSTask alloc] init]; <br /> [systemProfiler setLaunchPath:@"/usr/sbin/system_profiler"];<br /> NSArray *args = [NSArray arrayWithObjects:@"-detailLevel mini -xml > report.xml", nil];<br /> [systemProfiler setArguments:args];<br /> [systemProfiler launch];<br /> [systemProfiler release];<br /> }
Si je regarde dans la console de Xcode, je vois bien la commande qui est exécutée mais les arguments ne sont pas pris en compte.
J'ai essayé différentes méthodes trouvées sur Internet (séparer les arguments, déclaration de "args" différente, etc...) mais rien n'a fonctionné.
Quelqu'un aurait une idée?
D'avance merci.
PS: Etant débutant, je ne sais pas si le bout de code que j'ai mis est suffisant et d'avance, excusez mon vocabulaire qui peut ne pas être adapté dans certains cas, fonction, classe, méthode, instance et j'en passe. C'est un peu flou parfois ^^
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Par ailleurs, il n'es pas conseillé de faire "> report.xml" dans un NSTask. Cela ne doit certainement pas fonctionner, il faut associer un standardOutput au NSTask pour gérer tout cela. Je pense qu'il doit y avoir des exemples sur ce forum (au pire des cas, un peu de pub, j'avais fait un petit article sur mon blog).
Pour générer le fichier, je me demandais justement si je n'allais pas envoyer les données dans un NSPipe pour ensuite les récupérer je ne sais pas encore comment
Je vais me pencher plus sérieusement sur le souci.
En tout cas, merci!
Merci beaucoup. Je vais maintenant étudier les choses pour mettre les informations dans un fichier sans utiliser le shell.
PS: Je suis déjà passé sur ton site il y a 2jours et j'ai déjà étudié ton exemple NSTask :P