termios- POSIX样式tty控件 – Unix特定服务(Python教程)(参考资料)
termios
– POSIX样式tty控件
此模块提供POSIX调用接口以进行tty I / O控制。有关这些调用的完整描述,请参阅termios(3)Unix手册页。它仅适用于那些支持POSIX的Unix版本termios样式安装时配置的I / O控件.
本模块中的所有函数都带有文件描述符fd作为他们的第一个论点。这可以是整数文件描述符,例如sys.stdin.fileno()
返回,或者文件对象,例如sys.stdin
本身.
该模块还定义了使用此处提供的功能所需的所有常量;它们与C中的对应物具有相同的名称。有关使用这些终端控制接口的更多信息,请参阅系统文档.
该模块定义了以下功能:
termios.
tcgetattr
(fd)- 返回一个包含文件描述符fd的tty属性的列表,如下所示:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
其中cc是一个tty特殊字符的列表(每个字符串长度为1,除了索引为VMIN
和VTIME
,这是定义字段的整数)。必须使用cc中定义的符号常量来解释标志和速度以及termios
module
termios.
tcsetattr
//(fd, when, attributes)- 从fd设置文件描述符attributes的tty属性,这是一个像这样的列表由
tcgetattr()
返回。when参数确定何时更改属性:TCSANOW
要立即更改,TCSADRAIN
在传输所有排队输出后更改,或者TCSAFLUSH
发送所有排队输出并删除所有排队输入后更改.
termios.
tcdrain
(fd)- 等到写入文件描述符fd的所有输出都被传输了
termios.
tcflow
(fd, action)- 暂停或恢复文件描述符的输入或输出fd。action参数可以
TCOOFF
暂停输出,TCOON
重启输出,TCIOFF
暂停输入,或TCION
重启输入。
参见
- 模块
tty
- 常用终端控制操作的便捷功能.
例
这是一个提示输入密码并关闭回显的功能。请注意使用单独的tcgetattr()
调用和try
… finally
语句,以确保无论发生什么情况都会恢复旧的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