Inclure un terminal dans une application Cocoa

Guillaume CGuillaume C Membre
19:28 modifié dans API AppKit #1
Bonjour,

Je voudrais savoir s'il est possible, et si oui comment, d'inclure un terminal dans une application Cocoa. En gros, je souhaiterais avoir une NSView dans laquelle je tape des commandes UNIX et y récupère les résultats.

Merci

Guillaume

PS: Apparemment, il y un framework fourni par iTerm qui fait ça, mais impossible de compiler les sources.

Réponses

  • AliGatorAliGator Membre, Modérateur
    19:28 modifié #2
    Maà®trises tu déjà  la gestion des NSTasks, pour permettre d'exécuter des commandes terminal ?
    Un terminal est composé de plusieurs choses :
    - Un shell, qui interprète les commandes : c'est lui qui est chargé d'interpréter le texte que tu tapes pour séparer les divers arguments (selon les espaces, sauf s'ils sont échappés ou dans une chaà®ne entre guillemets, ...), remplacer le tilte ou faire les substitutions de variables, recherches les exécutables dans le PATH, ...
    - Les redirections des entrées et sorties, via les pipes entre autres, du texte entré par l'utilisateur dans le shell ou sorties par l'exécutable pour les imprimer à  l'écran
    - L'exécution des commandes elles mêmes.

    L'exécution des commandes se fait par NSTask (tu fournis le chemin de l'exécutable, et un NSArray d'arguments), et te permet n'envoyer des données à  l'entrée standard et récupérer les données de la sortie standard. Mais après c'est à  toi, si tu veux faire des pipes, des substitutions de variables, etc, de les faire par code. Par exemple si tu veux chaà®ner deux commandes, comme tu le ferais avec un pipe " | " dans un terminal classique, à  toi de créer deux NSTask et de chaà®ner la sortie de l'une avec l'entrée de l'autre via un NSPipe.

    Exécuter des commandes terminal est relativement simple... Faire un shell (que ce soit un équivalent de sh, bash, tcsh, ...) est déjà  une autre paire de manches vu tout ce qu'il y a à  penser ;)
    Après, tu peux tout à  fait faire un shell assez simpliste, qui ne fait que séparer les arguments de ta ligne de commande (encore faut-il alors penser aux caractères d'échappement et ne pas considérer les espaces étant dans une chaà®ne entre guillemets) pour exécuter la NSTask, et récupérer le résultat retourné pour l'afficher dans une UIView.
  • Guillaume CGuillaume C Membre
    19:28 modifié #3
    dans 1259515804:

    Maà®trises tu déjà  la gestion des NSTasks, pour permettre d'exécuter des commandes terminal ?


    Oui, mais je pensais qu'il existait un genre de plugin pour interface builder où les fonctionnalités du terminal étaient déjà  codées.
Connectez-vous ou Inscrivez-vous pour répondre.