【发布时间】:2015-10-27 13:59:50
【问题描述】:
我一直在查看 terminfo,但它有延迟,例如$<5>,在功能字符串中。我试图通过在strace 下运行tput 来查看延迟是如何实现的,即,它是通过例如nanosleep 还是通过插入NUL 或其他字符来实现的。这是我尝试运行和跟踪的命令:
TERM=ansi77 strace -o log.txt tput dl1
我在ansi77 上选择了dl1,因为它被定义为dl1=\E[M$<5*/>。但是,我在跟踪中看到的只是 3 个字节的写入:
write(1, "\33[M", 3) = 3
- 所以,我的问题是,延迟实际上是如何实现的?填充字符还是简单的进程/线程睡眠?
- 我可以在终端模拟器中观察还是需要真正的硬件终端才能看到?
- 尝试使用
tput重现它有什么缺陷吗?
【问题讨论】:
-
没有被问到的问题是房间里的大象:现代实现是否会打扰?
-
@WumpusQ.Wumbley:嗯,如果你用串口线连接真实终端呢?至少在这种情况下,它应该尊重延迟。