Bonjour,
je suis en train de coder un shell. Je peux pour le moment exécuter tout types de commandes. Maintenant j'aimerai ajouter une édition de ligne, pour que ça soit un peu plus conviviable etc. N'étant pas seul sur le projet, et ne m'occupant pas de cette partie, le choix c'est porté sur ncurses pour la réalisation de l'édition de ligne. Il y a donc une fonction qui a été faite et qui permet de récupérer la ligne rentrer par l'utilisateur via les ncurses.
Le problème qui se pose, c'est que lors de l'execution, le résultat est effacé dès que la commande est terminé. Le "read line" reprend la main, et repasse sur un écran virtuel perdant ainsi le résultat de la commande précédente (bien qu'elle se soit exécuté correctement).
Y aurait-il un moyen propre (rajouter un pipe pour lire stdout, et le repasser a stdscr, je trouve pas ça propre) pour "marier" le résultat de l'exécution avec la récupération de la ligne via ncurses ?
Sinon, après quelques modifications, j'ai réussi a faire afficher le résultat dans les ncurses. Le soucis c'est que le formatage (dont les \n) ne sont pas très bien respecté. Un "ls -l" s'execture, et les \n ont étés remplacés par des \t (Super laid). Un des soucis qu'engendre, en plus, cette méthode, c'est la perte de la position du curseur. De cette façon, si on fait jouer l'historie (haut bas), les anciennes commandes apparaisse plus haut qu'elles ne le devraient.
Je ne cherche pas du code tout fait, simplement des retours sur des expériences, de la doc pouvant répondre à mes problèmes ou mieux, les deux ^_^.
Cordialement.
Partager