termios --- điều khiển tty kiểu POSIX¶
Mô-đun này cung cấp giao diện cho các lệnh gọi POSIX để điều khiển I/O tty. Để biết mô tả đầy đủ về các lệnh gọi này, hãy xem trang hướng dẫn Unix termios(3). Nó chỉ có sẵn cho những phiên bản Unix hỗ trợ điều khiển I/O kiểu POSIX termios được định cấu hình trong khi cài đặt.
sẵn có: Unix.
Tất cả các hàm trong mô-đun này đều lấy bộ mô tả tệp fd làm đối số đầu tiên. Đây có thể là một bộ mô tả tệp số nguyên, chẳng hạn như được trả về bởi sys.stdin.fileno() hoặc file object, chẳng hạn như chính sys.stdin.
Mô-đun này cũng xác định tất cả các hằng số cần thiết để hoạt động với các hàm được cung cấp ở đây; những cái này có cùng tên với các bản sao của chúng trong C. Vui lòng tham khảo tài liệu hệ thống của bạn để biết thêm thông tin về cách sử dụng các giao diện điều khiển đầu cuối này.
Mô-đun xác định các chức năng sau:
- termios.tcgetattr(fd)¶
Trả về danh sách chứa các thuộc tính tty cho bộ mô tả tệp fd, như sau:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]trong đó cc là danh sách các ký tự đặc biệt tty (mỗi ký tự có độ dài 1, ngoại trừ các mục có chỉ mụcVMINvàVTIME, là số nguyên khi các trường này được xác định). Việc giải thích các cờ và tốc độ cũng như việc lập chỉ mục trong mảng cc phải được thực hiện bằng cách sử dụng các hằng số ký hiệu được xác định trong mô-đuntermios.
- termios.tcsetattr(fd, when, attributes)¶
Đặt thuộc tính tty cho bộ mô tả tệp fd từ attributes, đây là danh sách giống như danh sách được trả về bởi
tcgetattr(). Đối số when xác định khi nào các thuộc tính được thay đổi:- termios.TCSANOW¶
Thay đổi thuộc tính ngay lập tức.
- termios.TCSADRAIN¶
Thay đổi thuộc tính sau khi truyền tất cả đầu ra được xếp hàng đợi.
- termios.TCSAFLUSH¶
Thay đổi thuộc tính sau khi truyền tất cả đầu ra được xếp hàng đợi và loại bỏ tất cả đầu vào được xếp hàng đợi.
- termios.tcsendbreak(fd, duration)¶
Gửi ngắt trên bộ mô tả tập tin fd. Một duration bằng 0 sẽ gửi thời gian nghỉ trong 0,25--0,5 giây; một duration khác không có ý nghĩa phụ thuộc vào hệ thống.
- termios.tcdrain(fd)¶
Đợi cho đến khi tất cả đầu ra được ghi vào bộ mô tả tệp fd đã được truyền đi.
- termios.tcflush(fd, queue)¶
Loại bỏ dữ liệu được xếp hàng đợi trên bộ mô tả tệp fd. Bộ chọn queue chỉ định hàng đợi nào:
TCIFLUSHcho hàng đợi đầu vào,TCOFLUSHcho hàng đợi đầu ra hoặcTCIOFLUSHcho cả hai hàng đợi.
- termios.tcflow(fd, action)¶
Tạm dừng hoặc tiếp tục nhập hoặc xuất trên bộ mô tả tệp fd. Đối số action có thể là
TCOOFFđể tạm dừng đầu ra,TCOONđể khởi động lại đầu ra,TCIOFFđể tạm dừng đầu vào hoặcTCIONđể khởi động lại đầu vào.
- termios.tcgetwinsize(fd)¶
Trả về một bộ
(ws_row, ws_col)chứa kích thước cửa sổ tty cho bộ mô tả tệp fd. Yêu cầutermios.TIOCGWINSZhoặctermios.TIOCGSIZE.Added in version 3.11.
- termios.tcsetwinsize(fd, winsize)¶
Đặt kích thước cửa sổ tty cho bộ mô tả tệp fd từ winsize, đây là một bộ dữ liệu gồm hai mục
(ws_row, ws_col)giống như bộ được trả về bởitcgetwinsize(). Yêu cầu ít nhất một trong các cặp (termios.TIOCGWINSZ,termios.TIOCSWINSZ); (termios.TIOCGSIZE,termios.TIOCSSIZE) được xác định.Added in version 3.11.
Xem thêm
- Mô-đun
tty Các chức năng tiện lợi cho các hoạt động điều khiển thiết bị đầu cuối chung.
Ví dụ¶
Đây là chức năng nhắc nhập mật khẩu khi tắt tiếng vang. Lưu ý kỹ thuật sử dụng lệnh gọi tcgetattr() riêng biệt và câu lệnh try ... finally để đảm bảo rằng các thuộc tính tty cũ được khôi phục chính xác bất kể điều gì xảy ra:
def getpass(prompt="Mật khẩu: "):
nhập thuật ngữ, sys
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
mới = termios.tcgetattr(fd)
mới[3] = mới[3] & ~termios.ECHO # lflags
thử:
termios.tcsetattr(fd, termios.TCSADRAIN, mới)
passwd = đầu vào(nhắc)
cuối cùng:
termios.tcsetatr(fd, termios.TCSADRAIN, cũ)
trả lại mật khẩu