# `termios` — POSIX 스타일 tty 제어

이 모듈은 tty I/O 제어를 위한 POSIX 호출에 대한 인터페이스를 제공합니다. 이 호출에 대한 자세한 설명은 termios(3) 유닉스 매뉴얼 페이지를 참조하십시오. 설치 중에 구성된 POSIX termios 스타일 tty I/O 제어를 지원하는 유닉스 버전에서만 사용할 수 있습니다.

가용성: Unix.

이 모듈의 모든 함수는 첫 번째 인자로 파일 기술자 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` 모듈에 정의된 기호 상수를 사용해서 이루어져야 합니다.

termios.tcsetattr(fd, when, attributes)

  파일 기술자 fd에 대한 tty 어트리뷰트를 attributes로 설정합니다. attributes는 `tcgetattr()`에 의해 반환된 것과 같은 리스트입니다. when 인자는 언제 어트리뷰트가 변경되는지를 결정합니다:

  termios.TCSANOW

    어트리뷰트를 즉시 변경합니다.

  termios.TCSADRAIN

    계류 중인 모든 출력을 전송한 후에 어트리뷰트를 변경합니다.

  termios.TCSAFLUSH

    계류 중인 모든 출력을 전송하고 계류 중인 모든 입력을 버린 후에 어트리뷰트를 변경합니다.

termios.tcsendbreak(fd, duration)

  파일 기술자 fd에 브레이크(break)를 보냅니다. 0 duration은 0.25–0.5 초 동안 브레이크를 보냅니다; 0이 아닌 duration은 시스템 종속적인 의미가 있습니다.

termios.tcdrain(fd)

  파일 기술자 fd에 기록된 모든 출력이 전송될 때까지 기다립니다.

termios.tcflush(fd, queue)

  파일 기술자 fd에 계류 중인 데이터를 버립니다. queue 선택기는 어떤 큐인지를 지정합니다: 입력 큐는 `TCIFLUSH`, 출력 큐는 `TCOFLUSH` 또는 두 큐 모두는 `TCIOFLUSH`.

termios.tcflow(fd, action)

  파일 기술자 fd에서 입력 또는 출력을 일시 중단하거나 다시 시작합니다. action 인자는 출력을 일시 중단하는 `TCOOFF`, 출력을 다시 시작하는 `TCOON`, 입력을 일시 중단하는 `TCIOFF` 또는 입력을 다시 시작하는 `TCION`이 될 수 있습니다.

termios.tcgetwinsize(fd)

  Return a tuple `(ws_row, ws_col)` containing the tty window size for file descriptor fd. Requires `termios.TIOCGWINSZ` or `termios.TIOCGSIZE`.

  Added in version 3.11.

termios.tcsetwinsize(fd, winsize)

  Set the tty window size for file descriptor fd from winsize, which is a two-item tuple `(ws_row, ws_col)` like the one returned by `tcgetwinsize()`. Requires at least one of the pairs (`termios.TIOCGWINSZ`, `termios.TIOCSWINSZ`); (`termios.TIOCGSIZE`, `termios.TIOCSSIZE`) to be defined.

  Added in version 3.11.

더 보기

모듈 `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