我希望能够知道 xterm.js 中的回显模式何时关闭(例如,输入密码时)。stty 可以报告和更改该信息,但(显然)在等待用户输入密码时无法执行。查询回显状态的 API 是什么?
1 回答
在 linux、macos 和其他 POSIX 兼容操作系统下看到的终端指标是终端接口部分下指定的 POSIX 功能:
- https://en.wikipedia.org/wiki/POSIX_terminal_interface
- https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap11.html
围绕终端的许多设置(例如 ECHO 模式)的有趣部分是termios
API,您可以在兼容的系统上使用 C 中的tcgetattr
/访问它。tcsetattr
此外,许多语言提供了对该 API 的某种绑定(例如 python 模块termios
)。
在大多数 POSIX 系统上,可以通过调用man termios
或来访问该文档man tcgetattr
。
来自网络的示例文档:
编辑:
重新阅读您的问题 - 如果您希望能够从 xterm.js 中获取 ECHO 状态,那么这不可能那么容易。这样做的原因很麻烦 - xterm.js 是 PTY 背后的模拟器。PTY 将终端操作拆分为主从部分,其中主部分充当终端进程(此处为 xterm.js),从属部分是附加到该终端的进程。虽然 POSIX 只保证termios
API 在从属部分上工作(它的整个编写是为了消费进程),但 BSD 风格的系统也允许termios
在主控部分使用语义。
TL;DR:在 linux 和 macos 上,您可以在 PTY 绑定(例如)持有termios
的主文件描述符node-pty
上使用 API ,而这仅适用于solaris 克隆(或任何其他基于 STREAMS 的 TTY 实现)下的从文件描述符。