- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在查看 terminfo,它有延迟,例如$<5>
, 在功能字符串中。我试图通过运行来查看 tput
在 strace
下延迟是如何实现的,即是否由nanosleep
实现或者通过插入 NUL
或其他角色。这是我尝试运行和跟踪的命令:
TERM=ansi77 strace -o log.txt tput dl1
我选择了dl1
在 ansi77
因为它被定义为 dl1=\E[M$<5*/>
.然而,我在跟踪中看到的只是写入了 3 个字节:
write(1, "\33[M", 3) = 3
tput
重现它有什么缺陷吗? ?最佳答案
同意@cliffordheath 的观点,即填充是通过添加填充字符来完成的,引用可用文档会有所帮助。
硬件终端并没有不复存在,它们还在supported by ncurses .如果没有填充,这些旧终端将无法正常工作(丢失或损坏您的输出)。 vt100
条目使用了填充,而 xterm
则没有。
填充字符的terminfo名称是pad
; pc
是一个 termcap 名称(参见 terminfo(5) ):
pad_char pad pc padding char
(instead of null)
terminfo 手册页有一个很长的段落(在 Types of Capabilities 中)处理填充。 terminfo 格式支持两种类型的填充(advisory 和mandatory),以它们的格式区分。 termcap 仅支持后者(当然使用不同的语法),并且与 terminfo 不同,所有延迟都同时发生(使“flash”的转义序列通常不起作用)。
命令行 tput
程序不仅仅充当函数 tputs
的包装器,但它在输出字符串时使用它。命令行程序提供输出 bool 值、数字,当然还有字符串功能。
库调用 tputs
有一个参数,用于计算延迟时考虑的受影响行数(如波特率)。
在OP的问题中
dl1=\E[M$<5*/>
指定与受影响的行数成比例的延迟(由 "*"
字符标记)。 命令行 tput
实用程序受影响的行数是 1。它调用 putp
去做这个。但是,这又会调用 delay_output ,然后调用 baudrate .最后一个函数仅在终端初始化时初始化。命令行tput
不 初始化终端,因此延迟对that 不起作用。您应该看到(给定正确的速度)使用库本身的延迟。
ncurses 还提供时间延迟 napms
(毫秒),这与填充不同。
关于linux - terminfo 延迟/填充如何在 TTY 中实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33370036/
我正在阅读The TTY demystified ,试图对 tty、pty 有一些了解。 读完前半部分。当我在 xterm 或 ssh 中输入一些命令时,我无法全面了解整个事情是如何工作的。 下图是我
假设我登录到终端 tty1,现在我想从 tty1 运行一个脚本,它会自动让我登录到 tty2、tty3、tty4。当然,我不想到处输入密码和用户名,因为我已经在 tty1 上进行了身份验证。 问题:如
为什么在我将 CentOS 作为 Docker 容器启动后,当我运行 tty 时,我得到: # tty not a tty 不是 tty 的原因是什么? 最佳答案 docker run 不会模拟 TT
我正在尝试通过 php 安装 composer,如他们的网站所述。 php -r "readfile('https://getcomposer.org/installer');" | php 但它显示
我正在运行一个 docker 容器并正在检查它。我发现 "Config": { "Hostname": "amb1.service.consul", "Domainname": "", "User":
我想用 2 个 xterm 窗口调试控制台 linux 应用程序:一个窗口用于 gdb,另一个用于应用程序(例如 mc)。 我现在要做的是在第二个 xterm 窗口中运行“tty && sleep 1
docker exec -it 命令返回以下错误“无法在非 tty 输入上启用 tty 模式” level="fatal" msg="cannot enable tty mode on non tty
这是命令的输出: Step 5/7 : RUN ./vendor/bin/laravel new --force testapp ---> Running in dc92e378b12a Craft
请帮助 MySQL Git Bash winpty mysqldump。 “winpty mysqldump”在 Git Bash 中不工作。这里是错误的详细信息: Git 狂欢 $ winpty m
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 7 年前。 Improve this ques
我一直在试图弄清楚 TTY 驱动程序是如何工作的(充分理解每个内核的实现可能不同),并且偶然发现了一篇不错的文章:The TTY demystified 但是我注意到它声称 xterm 没有 stdi
我正在使用 fork() 和 execvp() 来生成一个进程,该进程必须相信它已连接到交互式终端才能正常运行。 生成后,我想捕获进程的所有输出,并能够将输入发送到进程。 我怀疑 psuedo-tty
我在 ReactJs + 样式组件中遇到这个错误。我该如何解决? Compiled with problems: ERROR in ./node_modules/colorette/index.js
我在 ReactJs + 样式组件中遇到这个错误。我该如何解决? Compiled with problems: ERROR in ./node_modules/colorette/index.js
你好,这是我的脚本: import sys import LED import os import subprocess if __name__ == '__main__': LED_BLUE
我有几个问题。一,如何确定程序使用的 TTY,然后将其作为参数传递给另一个程序? 此外,我正在使用 writevt 程序,并将字符串发送到 TTY 设备。它工作正常,但不使用我发送它的回车符。所以,我
我想从内核空间写入 tty,并且只能访问该特定 tty 的主要和次要设备号。 我通过系统调用进入内核,该系统调用工作正常,并且能够通过使用写入当前 tty my_tty = current->sign
我最近注意到我的系统(运行在 AT91SAM9G15 上)有一个非常奇怪的行为:尽管我一直在读取串行端口,但 TTY 驱动程序有时需要 1.2 秒才能从输入队列传送数据。事情是:我没有丢失任何数据,只
我在没有屏幕的硬件上运行 linux,并将所有数据转储到串口。我正在通过 hyperterm 或 teraterm 等应用程序阅读 linux 序列。我得到了正确格式化的串行输出。但是,如果我将该输出
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我是一名优秀的程序员,十分优秀!