是否有人直接使用terminfo
,tputs()
,tparm()
,tigetstr()
等tigetnum()
功能?
我无法通过这些低级终端功能在线找到任何实际示例。
每个人都使用ncurses
库来控制终端并且不会对这个低级代码感到烦恼吗?
我觉得这个低级代码很难读。
我是否应该费心使用这个低级代码,或者只是学习ncurses
,而使用ncurses提供的更高级别的代码更难以解决这个问题?
如果有人知道有关此类低级功能的实用信息,请与我分享。
答案 0 :(得分:2)
每个人都使用ncurses库来控制终端并且不会对这个低级代码感到烦恼吗?
这很容易检查。
首先,在ncurses库中准备一个函数列表。在我的系统上:
nm -D /lib64/libncurses.so.5.9 | fgrep ' T ' \
| sed 's/^[0-9A-Fa-f ]*T //' > /tmp/ncurses-functions-list
现在看看有多少用于各种程序。
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
答案 1 :(得分:0)
脚本是一个起点,但需要改进。首先,告诉它它的作用:
改进它的一种方法是显示(最初请求)哪些程序使用低级接口,哪些程序使用高级ncurses接口。正如ncurses FAQ Types of library users中所提到的,区分这些的方法是查看哪些程序调用initscr或newterm(需要初始化高级接口),哪些不需要。一个简单的“ldd”将显示哪些程序与ncurses链接(以给出总数),并将功能列表减少到第二个脚本 - 使用高级接口。