termiosPOSIX样式tty控件


模块提供POSIX调用接口以进行tty I / O控制。有关这些调用的完整描述,请参阅termios(3)Unix手册页。它仅适用于那些支持POSIXUnix版本termios样式安装时配置的I / O控件.

模块中的所有函数都带有文件描述符fd作为他们的第一个论点。这可以是整数文件描述符,例如sys.stdin.fileno()返回,或者文件对象,例如sys.stdin本身.

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

该模块定义了以下功能:

termios.tcgetattrfd
返回一个包含文件描述符fdtty属性的列表,如下所示:[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]其中cc是一个tty特殊字符的列表(每个字符串长度为1,除了索引为VMINVTIME,这是定义字段的整数)。必须使用cc中定义的符号常量来解释标志和速度以及termiosmodule
termios.tcsetattr//(fd, when, attributes)
fd设置文件描述符attributes的tty属性,这是一个像这样的列表由tcgetattr()返回。when参数确定何时更改属性:TCSANOW要立即更改,TCSADRAIN在传输所有排队输出后更改,或者TCSAFLUSH发送所有排队输出并删除所有排队输入后更改.
termios.tcsendbreak (fd, duration)
在文件描述符fd上中断。零duration发送休息0.25-0.5秒;非零duration有一个系统依赖的含义.
termios.tcdrain(fd)
等到写入文件描述符fd的所有输出都被传输了
termios.tcflushfd, queue
丢弃文件描述符fdqueue选择器指定输入队列队列TCIFLUSH,输出队列TCOFLUSH,或两个队列的TCIOFLUSH .
termios.tcflowfd, action
暂停或恢复文件描述符的输入或输出fdaction参数可以TCOOFF暂停输出,TCOON重启输出,TCIOFF暂停输入,或TCION重启输入。

参见

模块tty
常用终端控制操作的便捷功能.

 

这是一个提示输入密码并关闭回显的功能。请注意使用单独的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