termios — POSIX 스타일 tty 제어


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

이 모듈의 모든 함수는 첫 번째 인자로 파일 기술자 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)

파일 기술자 fd에 대한 tty 어트리뷰트를 attributes로 설정합니다. attributestcgetattr()에 의해 반환된 것과 같은 리스트입니다. when 인자는 언제 어트리뷰트가 변경되는지를 결정합니다: 즉시 변경하려면 TCSANOW, 계류 중인 모든 출력을 전송한 후에 변경하려면 TCSADRAIN, 계류 중인 모든 출력을 전송하고 계류 중인 모든 입력을 버린 후 변경하려면 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가 될 수 있습니다.

더 보기

모듈 tty

공통 터미널 제어 연산을 위한 편리 함수.

예제

이것은 에코가 꺼진 상태에서 암호를 묻는 함수입니다. 별도의 tcgetattr() 호출과 tryfinally 문을 사용하여 이전 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