"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)

   Return a list containing the tty attributes for file descriptor
   *fd*, as follows: "[iflag, oflag, cflag, lflag, ispeed, ospeed,
   cc]" where *cc* is a list of the tty special characters (each a
   string of length 1, except the items with indices "VMIN" and
   "VTIME", which are integers when these fields are defined).  The
   interpretation of the flags and the speeds as well as the indexing
   in the *cc* array must be done using the symbolic constants defined
   in the "termios" module.

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
