termios — POSIX 样式 tty 控件


该模块为 tty I/O 控制提供了 POSIX 调用的接口。有关这些调用的完整说明,请参见* termios(3) * Unix 手册页。它仅适用于支持在安装过程中配置的 POSIX * termios *样式 tty I/O 控制的 Unix 版本。

该模块中的所有函数都将文件 Descriptors* fd *作为其第一个参数。这可以是整数文件 Descriptors(例如sys.stdin.fileno()返回),也可以是file object(例如sys.stdin本身)。

该模块还定义了使用此处提供的Function所需的所有常量。它们与 C 中的名称相同。有关使用这些终端控制接口的更多信息,请参考系统文档。

该模块定义了以下Function:

  • termios. tcgetattr(* fd *)

    • 返回包含文件 Descriptors* fd 的 tty 属性的列表,如下所示:[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]其中 cc 是 tty 特殊字符的列表(每个字符串的长度为 1,但索引为VMINVTIME的项为整数)这些字段定义时)。标志和速度的解释以及 cc *数组中的索引必须使用termios模块中定义的符号常量来完成。
  • termios. tcsetattr(* fd when attributes *)

    • 从* attributes 设置文件 Descriptors fd *的 tty 属性,该列表类似于tcgetattr()返回的列表。 * when *参数确定何时更改属性:TCSANOW立即更改,TCSADRAIN在传输所有排队的输出后更改,TCSAFLUSH在传输所有排队的输出并丢弃所有排队的 Importing 后更改。
  • termios. tcsendbreak(* fd duration *)

    • 发送文件 Descriptors* fd *的break。持续时间为零,会发出 0.25-0.5 秒的间隔;非零持续时间具有与系统有关的含义。
  • termios. tcdrain(* fd *)

    • await 直到写入文件 Descriptors* fd *的所有输出都已传输。
  • termios. tcflush(* fd queue *)

    • 丢弃文件 Descriptors* fd *上的排队数据。 * queue *selectors 指定哪个队列:TCIFLUSH表示 Importing 队列,TCOFLUSH表示输出队列,或TCIOFLUSH表示两个队列。
  • termios. tcflow(* fd action *)

    • 暂停或恢复文件 Descriptors* fd *上的 Importing 或输出。 * action *参数可以是TCOOFF暂停输出,TCOON重启输出,TCIOFF暂停 Importing,或TCION重启 Importing。

See also

  • Module tty

  • 普通端子控制操作的便利Function。

Example

这是一个提示您 Importing 密码并关闭回显的Function。请注意,该技术使用单独的tcgetattr()调用和tryfinally语句来确保无论发生什么情况,都将完全恢复旧的 tty 属性:

def getpass(prompt="Password: "):
    import termios, sys
    fd = sys.stdin.fileno()
    old = termios.tcgetattr(fd)
    new = termios.tcgetattr(fd)
    new[3] = new[3] & ~termios.ECHO          # lflags
    try:
        termios.tcsetattr(fd, termios.TCSADRAIN, new)
        passwd = input(prompt)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN, old)
    return passwd