diff options
author | Georg Brandl <georg@python.org> | 2007-08-15 14:28:22 (GMT) |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2007-08-15 14:28:22 (GMT) |
commit | 116aa62bf54a39697e25f21d6cf6799f7faa1349 (patch) | |
tree | 8db5729518ed4ca88e26f1e26cc8695151ca3eb3 /Doc/library/termios.rst | |
parent | 739c01d47b9118d04e5722333f0e6b4d0c8bdd9e (diff) | |
download | cpython-116aa62bf54a39697e25f21d6cf6799f7faa1349.zip cpython-116aa62bf54a39697e25f21d6cf6799f7faa1349.tar.gz cpython-116aa62bf54a39697e25f21d6cf6799f7faa1349.tar.bz2 |
Move the 3k reST doc tree in place.
Diffstat (limited to 'Doc/library/termios.rst')
-rw-r--r-- | Doc/library/termios.rst | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/Doc/library/termios.rst b/Doc/library/termios.rst new file mode 100644 index 0000000..695faad --- /dev/null +++ b/Doc/library/termios.rst @@ -0,0 +1,111 @@ + +:mod:`termios` --- POSIX style tty control +========================================== + +.. module:: termios + :platform: Unix + :synopsis: POSIX style tty control. + + +.. index:: + pair: POSIX; I/O control + pair: tty; I/O control + +This module provides an interface to the POSIX calls for tty I/O control. For a +complete description of these calls, see the POSIX or Unix manual pages. It is +only available for those Unix versions that support POSIX *termios* style tty +I/O control (and then only if configured at installation time). + +All functions in this module take a file descriptor *fd* as their first +argument. This can be an integer file descriptor, such as returned by +``sys.stdin.fileno()``, or a file object, such as ``sys.stdin`` itself. + +This module also defines all the constants needed to work with the functions +provided here; these have the same name as their counterparts in C. Please +refer to your system documentation for more information on using these terminal +control interfaces. + +The module defines the following functions: + + +.. function:: 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 :const:`VMIN` and :const:`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 :mod:`termios` module. + + +.. function:: tcsetattr(fd, when, attributes) + + Set the tty attributes for file descriptor *fd* from the *attributes*, which is + a list like the one returned by :func:`tcgetattr`. The *when* argument + determines when the attributes are changed: :const:`TCSANOW` to change + immediately, :const:`TCSADRAIN` to change after transmitting all queued output, + or :const:`TCSAFLUSH` to change after transmitting all queued output and + discarding all queued input. + + +.. function:: tcsendbreak(fd, duration) + + Send a break on file descriptor *fd*. A zero *duration* sends a break for 0.25 + --0.5 seconds; a nonzero *duration* has a system dependent meaning. + + +.. function:: tcdrain(fd) + + Wait until all output written to file descriptor *fd* has been transmitted. + + +.. function:: tcflush(fd, queue) + + Discard queued data on file descriptor *fd*. The *queue* selector specifies + which queue: :const:`TCIFLUSH` for the input queue, :const:`TCOFLUSH` for the + output queue, or :const:`TCIOFLUSH` for both queues. + + +.. function:: tcflow(fd, action) + + Suspend or resume input or output on file descriptor *fd*. The *action* + argument can be :const:`TCOOFF` to suspend output, :const:`TCOON` to restart + output, :const:`TCIOFF` to suspend input, or :const:`TCION` to restart input. + + +.. seealso:: + + Module :mod:`tty` + Convenience functions for common terminal control operations. + + +Example +------- + +.. _termios-example: + +Here's a function that prompts for a password with echoing turned off. Note the +technique using a separate :func:`tcgetattr` call and a :keyword:`try` ... +:keyword:`finally` statement to ensure that the old tty attributes are restored +exactly no matter what happens:: + + def raw_input(prompt): + import sys + sys.stdout.write(prompt) + sys.stdout.flush() + return sys.stdin.readline() + + 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 = raw_input(prompt) + finally: + termios.tcsetattr(fd, termios.TCSADRAIN, old) + return passwd + |