Quelqu’un utilise-t- terminfo
tputs()
fonctions terminfo
telles que tputs()
, tparm()
, tigetstr()
, tigetnum()
?
Je ne trouve aucun exemple pratique en ligne avec ces fonctions de terminal de bas niveau.
Est-ce que tout le monde utilise la bibliothèque ncurses
pour contrôler le terminal et ne s’embête pas avec ce code de bas niveau?
Je pense que ce code de bas niveau est très difficile à lire.
Dois-je m’embêter avec ce code de bas niveau ou simplement apprendre ncurses
qui est beaucoup moins lourd avec le code de niveau supérieur fourni par ncurses?
Si vous connaissez des informations pratiques sur ces fonctions de bas niveau, partagez-les avec moi.
Est-ce que tout le monde utilise la bibliothèque ncurses pour contrôler le terminal et ne s’embête pas avec ce code de bas niveau?
C’est très facile à vérifier.
Préparez d’abord une liste de fonctions dans la bibliothèque ncurses. Sur mon système, ce serait:
nm -D /lib64/libncurses.so.5.9 | fgrep ' T ' \ | sed 's/^[0-9A-Fa-f ]*T //' > /tmp/ncurses-functions-list
Maintenant, voyez combien d’entre eux sont utilisés dans divers programmes.
for f in /usr/bin/* ; do nm -D $f 2>/dev/null | fgrep ' U ' \ | sed 's/^ *U //' \ | fgrep -x -f - /tmp/ncurses-functions-list && echo ==== $f; done
Le script est un sharepoint départ, mais doit être amélioré. Tout d’abord, pour dire ce que ça fait:
Une manière de l’améliorer serait de montrer (comme demandé à l’origine) quels programmes utilisent l’interface de bas niveau et qui utilisent l’interface ncurses de haut niveau. Comme indiqué dans la FAQ ncurses Types d’utilisateurs de bibliothèque, la manière de les distinguer consiste à voir quels programmes appellent initscr ou newterm (nécessaires pour initialiser l’interface de haut niveau) et lesquels ne le sont pas. Un simple “ldd” montrerait quels programmes sont liés avec ncurses (pour donner le total), et réduire la liste de fonctions à ces deux dirait – avec le second script – qui utilise l’interface de haut niveau.