termios — POSIX 스타일 tty 제어

termios — POSIX 스타일 tty 제어

이 모듈은 tty I/O 제어를 위한 POSIX 호출에 대한 인터페이스를 제공합니다. 이 호출들에 대한 완전한 설명은 termios(3) Unix 매뉴얼 페이지를 참고하세요. 설치 중에 POSIX termios 스타일 tty I/O 제어를 지원하도록 구성된 Unix 버전에서만 사용할 수 있습니다.

출처: Python documentation

본문

availability: Unix.

이 모듈의 모든 함수는 첫 번째 인자로 파일 디스크립터 fd를 받습니다. 이것은 sys.stdin.fileno()가 반환하는 정수 파일 디스크립터이거나, sys.stdin 자체와 같은 파일 객체일 수 있습니다.

이 모듈은 또한 여기서 제공되는 함수와 함께 작업하는 데 필요한 모든 상수를 정의합니다. 이들은 C에서 대응하는 것과 같은 이름을 가집니다. 이러한 터미널 제어 인터페이스 사용에 대한 자세한 내용은 시스템 문서를 참고하세요.

termios.tcgetattr(fd)

파일 디스크립터 fd의 tty 속성을 포함하는 목록을 다음과 같이 반환합니다: [iflag, oflag, cflag, lflag, ispeed, ospeed, cc]. 여기서 cc는 tty 특수 문자 목록입니다(각각 길이 1의 문자열이며, 이러한 필드가 정의될 때 정수인 VMINVTIME 인덱스 항목은 예외). 플래그와 속도의 해석, 그리고 cc 배열의 인덱싱은 termios 모듈에 정의된 심볼릭 상수를 사용하여 수행해야 합니다.

termios.tcsetattr(fd, when, attributes)

tcgetattr()가 반환하는 목록과 같은 attributes로부터 파일 디스크립터 fd의 tty 속성을 설정합니다. when 인자는 속성이 변경되는 시점을 결정합니다.

  • termios.TCSANOW — 속성을 즉시 변경합니다.
  • termios.TCSADRAIN — 큐에 있는 모든 출력을 전송한 후 속성을 변경합니다.
  • termios.TCSAFLUSH — 큐에 있는 모든 출력을 전송하고 큐에 있는 모든 입력을 버린 후 속성을 변경합니다.

termios.tcsendbreak(fd, duration)

파일 디스크립터 fd에 브레이크 신호를 보냅니다. 0 지속 시간은 0.25~0.5초 동안 브레이크를 보냅니다. 0이 아닌 지속 시간은 시스템에 따라 의미가 다릅니다.

termios.tcdrain(fd)

파일 디스크립터 fd에 기록된 모든 출력이 전송될 때까지 기다립니다.

termios.tcflush(fd, queue)

파일 디스크립터 fd의 큐에 있는 데이터를 버립니다. 큐 선택자는 어떤 큐인지 지정합니다: 입력 큐는 TCIFLUSH, 출력 큐는 TCOFLUSH, 두 큐 모두는 TCIOFLUSH입니다.

termios.tcflow(fd, action)

파일 디스크립터 fd의 입력 또는 출력을 일시 중지하거나 재개합니다. action 인자는 출력을 일시 중지하려면 TCOOFF, 출력을 재개하려면 TCOON, 입력을 일시 중지하려면 TCIOFF, 입력을 재개하려면 TCION이 될 수 있습니다.

termios.tcgetwinsize(fd)

파일 디스크립터 fd의 tty 창 크기를 포함하는 튜플 (ws_row, ws_col)을 반환합니다. termios.TIOCGWINSZ 또는 termios.TIOCGSIZE가 필요합니다.

versionadded: 3.11.

termios.tcsetwinsize(fd, winsize)

tcgetwinsize()가 반환하는 것과 같은 두 항목 튜플 (ws_row, ws_col)winsize로부터 파일 디스크립터 fd의 tty 창 크기를 설정합니다. (termios.TIOCGWINSZ, termios.TIOCSWINSZ) 또는 (termios.TIOCGSIZE, termios.TIOCSSIZE) 쌍 중 적어도 하나가 정의되어 있어야 합니다.

versionadded: 3.11.

See also

Module tty — 일반적인 터미널 제어 연산을 위한 편의 함수.

예제

에코를 끈 상태에서 암호를 입력받는 함수입니다. 이전 tty 속성이 무엇이든 정확히 복원되도록 별도의 tcgetattr() 호출과 try ... finally 문을 사용하는 기법에 주목하세요:

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

더 알아보기 (Learn more)