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ục VMINVTIME, 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ô-đun termios.

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: TCIFLUSH cho hàng đợi đầu vào, TCOFLUSH cho hàng đợi đầu ra hoặc TCIOFLUSH cho 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ặc TCION để 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ầu termios.TIOCGWINSZ hoặc termios.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ởi tcgetwinsize(). 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, )
    trả lại mật khẩu