Bonjour !
J'essaie actuellement de lancer une application « terminal » (c.-à-d. qu'elle se lance en théorie dans la console) par une autre application « graphique ». Je ne suis pas sûr de la terminologie exacte, j'espère donc que je me fais bien comprendre.
Pour situer le contexte, le but est de l'application est de donner un moyen graphique à un utilisateur de donner à manger au programme en ligne de commande (pour justement lui éviter cette étape de ligne de commande).
J'ai donc, suite à une recherche web, consulté la doc et trouvé la classe qui semble appropriée : NSTask. J'ai donc tenté de mettre en place l'exécution dudit programme « terminal » avec cette classe comme suit :
Le fichier input que l'on voit en argument est issu du remplissage effectué par l'utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 NSTask *aTask; aTask = [[NSTask alloc] init]; [aTask setLaunchPath:commande]; NSArray *arguments; arguments = [NSArray arrayWithObjects: @"<", @"input", nil]; [aTask setArguments: arguments]; [aTask launch];
Le problème n'est pas syntaxique, par contre, le programme ne semble pas être lancé ; ou tout du moins n'est-il lancé que pendant un temps très court (un des fichier de sortie du programme « terminal » est produit, mais il est vide).
Certains utilisateurs de forums suggéraient peut-être une utilisation de la commande POSIX system(…) mais il semble que cela pose de sérieux problèmes de sécurité. Je me demande donc si :
- NSTask est bien la classe adaptée ;
- si elle l'est, je l'ai sûrement mal utilisée (mais je ne vois pas où) ;
- si elle ne l'est pas, je ne vois pas de stratégie efficace (je n'ai certes pas énormément d'expérience en Objective-C).
J'appelle donc à l'aide quiconque aurait une solution, un conseil, une piste à mon problème (une fois qu'il sera identifé, ce problème, la suite devrait être plus accessible, je pense).
Merci par avance .
(J'espère que c'est assez clair pour un premier post… Je n'ai d'ailleurs pas trouvé de sujet de « présentation », c'est peut-être pas le genre de la maison…)
Partager