tty man page on OSF1

Man page or keyword search:  
man Server   12896 pages
apropos Keyword Search (all sections)
Output format
OSF1 logo
[printable version]

tty(7)									tty(7)

NAME
       tty - General terminal interface

SYNOPSIS
       #include <sys/termios.h>

DESCRIPTION
       This  section describes both a particular special file /dev/tty and the
       terminal drivers used for conversational computing.  Much of the termi‐
       nal  interface  performance is governed by the settings of a terminal's
       termios structure. This structure  provides  definitions	 for  terminal
       input  and output processing, control and local modes, and so on. These
       definitions are found in the termios.h header file.

   Line Disciplines
       The operating system supports STREAMS-based and clist-based line disci‐
       plines,	which  allows for both STREAMS- and clist-based terminal driv‐
       ers.  Both line disciplines are POSIX compliant.

       The STREAMS-based line discipline is implemented as the STREAMS	module
       ldterm.	This line discipline performs most of the functions defined by
       the termios interface for session management and	 character  processing
       but not some low level device control.  In order to determine if a ter‐
       minal device is implemented as a STREAMS device, use the libc  function
       isastream()  on	the open file descriptor.  See the isastream(3) refer‐
       ence page.

       Users can switch line disciplines by using the command  strchg  or  the
       I_POP  or I_PUSH STREAMS ioctls. The ldterm line discipline is the only
       STREAMS-based line discipline provided by the base operating system for
       use with terminals. However, additional STREAMS modules to support fea‐
       tures needed in countries other than the United States  can  be	pushed
       above and below the ldterm module.

       The  operating system supports several clist-based line disciplines for
       controlling communication lines. By default, the Standard  line	disci‐
       pline,  which  supports full POSIX terminal semantics, is the only line
       discipline available for terminals. However, after the installation  of
       worldwide  portability  subsets,	 two  additional  line disciplines are
       available for processing the multibyte and single-byte coded  character
       sets used for Asian languages. The atty(7) and ttty(7) reference pages,
       which are also available after the worldwide  portability  subsets  are
       installed, describe these additional line disciplines.

       Line  discipline	 switching  is done with the TIOCSETD ioctl for clist-
       based terminal drivers.	 The  following	 example  illustrates  how  to
       switch line disciplines:

       int ldisc = LDISC;

       ioctl(fd,TIOCSETD,&ldisc);

       In  this	 example,  LDISC  is the index into the linesw table. (See the
       /sys/bsd/tty_conf.c file.)

       Other clist disciplines exist for special purposes, such as  communica‐
       tion  lines  for	 network  devices.  The current line discipline can be
       obtained with the TIOCGETD  ioctl  for  clist-based  terminal  drivers.
       Pending	output is discarded when the line discipline is changed.  When
       the Standard line discipline is used, NTTYDISC (value 2) is returned by
       default for BSD compatibility.  TTYDISC (value 0) is returned only when
       you compile the application with the -D_USE_NEW_TTY  switch.  When  the
       atty  or	 ttty  line  discipline	 is used, ASYDISC (value 9) or TSBDISC
       (value 10) is returned, respectively.

   The Controlling Terminal
       The operating system supports the concept of  a	controlling  terminal.
       Any  process  in	 the system can have a controlling terminal associated
       with it. Certain events, such as the  delivery  of  keyboard  generated
       signals	(for  example,	interrupt, quit, suspend), affect all the pro‐
       cesses in the process group associated with the	controlling  terminal.
       The  controlling	 terminal  also determines the physical device that is
       accessed when the indirect device /dev/tty is opened.

       In earlier versions of UNIX systems, a controlling terminal was implic‐
       itly assigned to a process if, at the time an open was done on the ter‐
       minal, the terminal was not the controlling terminal for	 any  process,
       and  if the process doing the open did not have a controlling terminal.
       In this version of UNIX, in accordance with  POSIX  1003.1,  a  process
       must  be	 a session leader to allocate a controlling terminal. In addi‐
       tion, the allocation is now done explicitly with	 a  call  to  ioctl().
       (This  implies  that  the  O_NOCTTY  flag  to  the  open()  function is
       ignored.)  The following example illustrates the correct	 sequence  for
       obtaining  a  controlling  tty  (no error checking is shown). This code
       fragment calls the setsid() function to make the	 current  process  the
       group  and  session  leader, and to remove any controlling tty that the
       process may already  have.   It	then  opens  the  console  device  and
       attaches	 it  to	 the current session as the controlling terminal. Note
       that the process must not already be a session or process group leader,
       and  the	 console  must not already be the controlling tty of any other
       session.

       (void)setsid();	       /* become session leader and */
			       /* lose controlling tty */ fd = open("/dev/con‐
       sole", O_RDWR); (void)ioctl(fd,TIOCSCTTY,0);

       A process can remove the association it has with its controlling termi‐
       nal by opening the /dev/tty file and issuing the following call:

       ioctl(fd, TIOCNOTTY, 0);

       For example:

       fd = open("/dev/tty", O_RDWR); if (fd  >	 =  0)	{	ioctl(fd,TIOC‐
       NOTTY,0);      close(fd); }

       If  the calling process is not the session leader, the process group of
       the calling process is set to 0.

       When a control terminal file is closed, pending input is	 removed,  and
       pending output is sent to the receiving device.

       When a terminal file is opened, the process blocks until a carrier sig‐
       nal is detected. If the open() function is called with  the  O_NONBLOCK
       flag set, however, the process does not wait. Instead, the first read()
       or write() call will wait for carrier to be established. If the	CLOCAL
       mode  is	 set  in  the termios structure, the driver assumes that modem
       control is not in effect, and open(),  read(),  and  write()  therefore
       proceed without waiting for a carrier signal to be established.

   Process Groups
       Each  process  belongs to a process group with a specific process group
       ID. Each process belongs to the process group of its creating  process.
       This  enables  related  processes to be signaled. Process group IDs are
       unique identifiers that cannot be used for other system process	groups
       until  the original process group is disbanded. Each process group also
       has a group leader process. A process group leader has the same process
       ID as its process group.

       Each  process  group belongs to a session.  Each process in the process
       group also belongs to the process group's session.  A process which  is
       not  the	 process  group	 leader can create its own session and process
       group with a call to the setsid() function. That calling	 process  then
       becomes	the  session  leader of the new session and of the new process
       group.  The new session has no controlling terminal until  the  session
       leader  assigns	one to it. The calling process's ID is assigned to the
       new process group.  With the setpgid() function, other processes can be
       added to a process group.

       A  controlling  terminal can have a distinguished process group associ‐
       ated with it known as the  foreground  process  group.  The  terminal's
       foreground  process group is the one that receives signals generated by
       the INTR, QUIT, and SUSP special control characters. Certain operations
       on  the	terminal  are  also  restricted to processes in the terminal's
       foreground process group (see Terminal Access  Control).	 A  terminal's
       foreground  process  group  may	be  changed by calling the tcsetpgrp()
       function. A terminal's current foreground process group may be obtained
       by calling the tcgetpgrp() function.

   Input Processing Modes
       The terminal drivers have two major modes, characterized by the kind of
       processing that takes place on the input characters: If a  terminal  is
       in canonical mode, input is collected and processed one line at a time.
       Lines are terminated by a newline (\n), End-of-File (EOF),  or  End-of-
       Line (EOL) character. A read request is not returned until the line has
       been terminated, or a signal has been received. The maximum  number  of
       bytes  of unread input allowed on an input terminal is MAX_INPUT bytes.
       If the maximum number of unread	bytes  exceeds	MAX_INPUT  bytes,  the
       behavior of the driver depends on the setting of the IMAXBEL input flag
       (see Input Editing).

	      Erase and kill processing is performed on	 input	that  has  not
	      been terminated by one of the line termination characters. Erase
	      processing removes the last character in the line, kill process‐
	      ing removes the whole line.  This mode eliminates erase and kill
	      processing, making input characters available to the  user  pro‐
	      gram  as they are typed. Input is not processed into lines.  The
	      received bytes are processed according to the values at the VMIN
	      and  VTIME  indexes  of the c_cc array in the termios structure.
	      MIN is the minimum number of bytes the terminal can  receive  in
	      noncanonical mode before a read is considered successful.	 TIME,
	      measured in 0.1 second granularity, times out sporadic input.

	      These cases are summarized as follows: In this case, TIME is  an
	      interbyte	 timer	that  is activated after the first byte of the
	      input line is received, and reset after each byte	 is  received.
	      The  read	 operation  is	a success if MIN bytes are read before
	      TIME runs out.  If TIME runs out	before	MIN  bytes  have  been
	      received,	 the  characters  that were received are returned.  In
	      this case, only MIN is used.  A queued read()  waits  until  MIN
	      bytes are received, or a signal is received.  In this case, TIME
	      is used as a read timer that starts when a read() call is	 made.
	      The  read() call is finished when one byte is read, or when TIME
	      runs out.	 In this case, either the number of requested bytes or
	      the  number  of currently available bytes is returned, depending
	      on which is the lesser number. The  read()  function  returns  a
	      zero if no data was read.

       Canonical  mode	is  entered  by setting the ICANON flag of the c_lflag
       field in the in the terminal's termios structure. Other input  process‐
       ing  is	performed  according to the other flags set in the c_iflag and
       c_lflag fields.

   Input Editing
       A terminal ordinarily operates in full-duplex mode. Characters  may  be
       typed at any time, even while output is occurring.  Characters are only
       lost when: The  system's	 character  input  buffers  become  completely
       choked,	which  is  rare.  The user has accumulated the maximum allowed
       number of input characters (MAX_INPUT) that have not yet been  read  by
       some program. The MAX_INPUT limit is 512 characters. When this limit is
       reached, the terminal driver refuses to accept any  further  input  and
       rings  the  terminal  bell  if  IMAXBEL is set in the c_iflag field, or
       throws away all input and output without notice if  this	 flag  is  not
       set.

       Input  characters  are  normally	 accepted in either even or odd parity
       with the parity bit being stripped off before the character is given to
       the  program. The ISTRIP mask of the c_iflag field controls whether the
       parity bit is stripped (ISTRIP set) or not stripped (ISTRIP  not	 set).
       By  setting  the	 PARENB	 flag in the c_cflag field, and either setting
       (not setting) the PARODD flag, it is possible to have input  characters
       with EVEN (ODD) parity discarded or marked (see Input Modes).

       In  all	of  the	 line disciplines, it is possible to simulate terminal
       input using the TIOCSTI ioctl, which takes, as its third argument,  the
       address	of  a  character.  The system pretends that this character was
       typed on the argument terminal, which must be the control terminal  for
       the process, unless the process has superuser privileges.

       Input characters are normally echoed by putting them in an output queue
       as they arrive. This may be disabled by clearing the ECHO  bit  in  the
       c_lflag	word using the tcsetattr() call or the TIOCSETA, TIOCSETAW, or
       TIOCSETAF ioctls.

       In canonical mode, terminal input is processed in  units	 of  lines.  A
       program	attempting  to read will normally be suspended until an entire
       line has been received (but see the description of SIGTTIN in  Terminal
       Access  Control).  No  matter  how many characters are requested in the
       read call, at most one line will be returned. It is not, however,  nec‐
       essary  to  read	 a whole line at once; any number of characters may be
       requested in a read, even one, without losing  information.  In	read()
       requests, the O_NONBLOCK flag affects the read() operation behavior.

       If  O_NONBLOCK  is not set, a read() request is blocked until data or a
       signal has been received. If the O_NONBLOCK flag	 is  set,  the	read()
       request is not blocked, and one of the following situations holds: Some
       data may have been typed, but there may or may not be  enough  data  to
       satisfy	the  entire  read request. In either case, the read() function
       returns the data available, returning the number of bytes  of  data  it
       read.  If there is no data for the read operation, the read() returns a
       -1 with an error of EAGAIN.

       During input, line editing is normally done with the erase special con‐
       trol  character (VERASE) logically erasing the last character typed and
       the kill special control character (VKILL) logically erasing the entire
       current	input  line. These characters never erase beyond the beginning
       of the current input line or an EOF (End-of-File).   These  characters,
       along  with the other special control characters, may be entered liter‐
       ally by preceding them  with  the  literal-next	character  (VLNEXT  --
       default ^V).

       The  drivers  normally treat either a newline character (`\n'), End-of-
       File character (EOF), or End-of-Line character (EOL) as terminating  an
       input  line,  echoing a return and a line feed.	If the ICRNL character
       bit is set in the c_iflag word then carriage returns are translated  to
       newline	characters  on	input,	and  are  normally  echoed as carriage
       return-linefeed sequences. If ICRNL is not  set,	 this  processing  for
       carriage	 return	 is disabled, and it is simply echoed as a return, and
       does not terminate cooked mode input.

       The POSIX terminal driver also provides two other editing characters in
       normal  mode.   The  word-erase character, normally <Ctrl-W>, is a c_cc
       structure special control character VWERASE. This character erases  the
       preceding  word,	 but  not  any	spaces	before it. For the purposes of
       <Ctrl-W>, a word is defined as a sequence of nonblank characters,  with
       tabs  counted  as  blanks. However, if the ALTWERASE flag is set in the
       c_lflag word, then a word is considered to be any sequence of  alphanu‐
       merics  or underscores bounded by characters that are not alphanumerics
       or underscores. Finally, the reprint character, normally <Ctrl-R>, is a
       c_cc  structure	special	 control  character  VREPRINT.	This character
       retypes the pending input beginning on  a  new  line.  Retyping	occurs
       automatically  in  canonical mode if characters which would normally be
       erased from the screen are fouled by program output.

   Input Modes
       The termios structure has an input mode field c_iflag,  which  controls
       basic  terminal	input characteristics. These characteristics are masks
       that can be bitwise inclusive ORed. The masks include: An interrupt  is
       signaled on a break condition.  All carriage returns are mapped to new‐
       line characters when input.  Break conditions  are  ignored.   Carriage
       returns	are ignored.  Characters with parity errors are ignored.  New‐
       line characters are mapped to  carriage	returns	 when  input.	Parity
       checks  are  enabled on input.  The eighth bit (parity bit) is stripped
       on input characters.  Stop/start characters are	sent  for  input  flow
       control	enabled.  Stop/start characters are recognized for output flow
       control.	 Any char will restart output after stop.  Map upper  case  to
       lower  case  on input.  Parity errors are marked with a three character
       sequence.  The bell is rung when the input queue fills.

       The input mode mask bits can be combined for the following results:

       The setting of IGNBRK causes input break conditions to be  ignored.  If
       IGNBRK  is not set, but BRKINT is set, the break condition has the same
       effect as if the VINTR control character had  been  typed.  If  neither
       IGNBRK  nor BRKINT are set, then the break condition is input as a sin‐
       gle character '\0'. If the PARMRK flag is set, then the input  is  read
       as three characters, '\377', '\0', and '\0'.

       The  setting  of	 IGNPAR	 causes a byte with a parity or framing error,
       except for breaks, to be ignored (that is, discarded). If IGNPAR is not
       set, but PARMRK is set, a byte with parity or framing error, except for
       breaks, is passed as the three characters '\377', '\0', and X, where  X
       is the character data received in error. If the ISTRIP flag is not set,
       the valid character '\377' is passed as '\377', '377'. If  both	PARMRK
       and IGNPAR are not set, framing or parity errors, including breaks, are
       passed as the single character '\0'.

       The setting of INPCK enables input parity checking.   If	 input	parity
       checking	 is  not  enabled (INPCK not set), then characters with parity
       errors are simply passed through as is. The enabling/disabling of input
       parity checking is independent of the generation of parity on output.

       Setting	ISTRIP	causes the eighth bit of the eight valid input bits to
       be stripped before processing. If this mask is not set, all eight  bits
       are processed.

       Setting	INLCR  causes  a  newline  character  to be read as a carriage
       return character. If the IGNCR flag is also set, the carriage return is
       ignored.	 If  the  IGNCR flag is not set, INLCR works as described ear‐
       lier.

       The STOP character (normally <Ctrl-S>) suspends output  and  the	 START
       character  (normally  <Ctrl-Q>)	restarts  output. Setting IXON enables
       stop/start output control, in which the START and STOP  characters  are
       not  read, but rather perform flow control functions.  Extra stop char‐
       acters typed when output is already stopped have no effect, unless  the
       start  and  stop	 characters  are  made	the same, in which case output
       resumes. Disabling IXON causes the START	 and  STOP  characters	to  be
       read.

       Setting	IXOFF enables stop/start input control. When this flag is set,
       the terminal device will be sent STOP characters to halt the  transmis‐
       sion  of	 data when the input queue is in danger of overflowing (exceed
       MAX_INPUT). When enough characters have been read to reduce the	amount
       of data queued to an acceptable level, a START character is sent to the
       device to allow it to continue transmitting data. This mode  is	useful
       when  the terminal is actually another machine that obeys those conven‐
       tions.

   Input Echoing and Redisplay
       The terminal driver has several modes for handling the echoing of  ter‐
       minal  input,  controlled  by  bits in the c_lflag field of the termios
       structure.

   Hardcopy Terminals
       When a hardcopy terminal is in use, the ECHOPRT bit is normally set  in
       the  local  flags  word. Characters which are logically erased are then
       printed out backwards preceded by \ (backslash) and  followed  by  a  /
       (slash) in this mode.

   Erasing Characters from a CRT
       When  a CRT terminal is in use, the ECHOE bit may be set to cause input
       to  be  erased  from  the  screen  with	a  “backspace-space-backspace”
       sequence when character or word deleting sequences are used. The ECHOKE
       bit may be set as well, causing the input to be erased in  this	manner
       on line kill sequences as well.

   Echoing of Control Characters
       If  the	ECHOCTL	 bit  is set in the local flags word, then nonprinting
       (control) characters are normally echoed as ^X (for some X) rather than
       being echoed unmodified; DELETE is echoed as ^?.

   Output Processing
       When  one or more characters are written, they are actually transmitted
       to the terminal as soon as previously written characters have  finished
       typing.	 (As  noted  above,  input  characters	are normally echoed by
       putting them in the output queue as they arrive.) When a	 process  pro‐
       duces  characters  more	rapidly	 than the terminal can accept them, it
       will be suspended when its output queue exceeds some  limit.  When  the
       queue  has  drained down to some threshold the program is resumed. Even
       parity is normally generated on output. If the NOEOT bit is set in  the
       c_oflag	word of the termios structure, the EOT character (<Ctrl-D>) is
       not transmitted, to prevent terminals that respond to it	 from  hanging
       up.

       The  terminal  drivers  provide	necessary processing for canonical and
       noncanonical mode output including delay generation for certain special
       characters and parity generation. Delays are available after backspaces
       (BSDLY), formfeeds (FFDLY), carriage returns (CRDLY), tabs (TABDLY) and
       newlines (NLDLY). The driver will also optionally expand tabs into spa‐
       ces, where the tab stops are assumed to be set every eight columns, and
       optionally  convert  newlines  to carriage returns followed by newline.
       Output process is controlled by	bits  in  the  c_oflag	field  of  the
       termios	structure. Refer to the write(2) reference page for a descrip‐
       tion of the O_NONBLOCK flag.

       The terminal drivers provide for mapping from  lowercase	 to  uppercase
       (OLCUC)	for  terminals	lacking lower case, and for other special pro‐
       cessing on deficient terminals.

       Finally, the terminal driver, supports an output flush character,  nor‐
       mally <Ctrl-O>, which sets the FLUSHO bit in the local mode word, caus‐
       ing subsequent output to be flushed until it is cleared by a program or
       more  input  is typed.  This character has effect in both canonical and
       noncanonical modes and causes any pending input to be retyped. An ioctl
       to  flush  the  characters in the input or output queues, TIOCFLUSH, is
       also available.

   Uppercase Terminals
       If the IUCLC bit in the c_iflag field is set in the tty flags, then all
       uppercase  letters  are mapped into the corresponding lowercase letter.
       The uppercase letter may be generated by preceding it by \ (backslash).
       Uppercase letters are preceded by a \ (backslash) when output. In addi‐
       tion, the following escape sequences will be generated  on  output  and
       accepted on input if the XCASE bit is set in the c_lflag word:

       ───────────────────
       For	      Use
       ───────────────────
       `	       \'
       |	       \!
       ~	       \^
       {	       \(
       }	       \)
       ───────────────────

   Line Control and Breaks
       There  are  several  ioctl  calls available to control the state of the
       terminal line. The TIOCSBRK ioctl will set the break bit in  the	 hard‐
       ware  interface causing a break condition to exist; this can be cleared
       (usually after a delay with sleep(3)) by	 TIOCCBRK.  The	 tcsendbreak()
       can  also  be used to cause a break condition for a specified amount of
       time. Break conditions in  the  input  are  handled  according  to  the
       c_iflag field settings for the termios structure.  Refer to the section
       Input Modes" for a complete listing of the c_iflag field settings.  The
       TIOCCDTR	 ioctl will clear the data terminal ready condition; it can be
       set again by TIOCSDTR.

       When the carrier signal from the dataset	 drops	(usually  because  the
       user  has  hung	up his terminal) a SIGHUP hangup signal is sent to the
       processes in the distinguished process group of the terminal; this usu‐
       ally  causes  them  to  terminate.  The sending of SIGHUP does not take
       place if the CLOCAL bit is set in c_cflag field of the  driver.	Access
       to  the	terminal  by  other processes is then normally revoked, so any
       further reads will fail, and programs that read a terminal and test for
       End-of-File on their input will terminate appropriately.

   Interrupt Characters
       When the ISIG bit is set in the c_lflag word, there are several charac‐
       ters that generate signals in both canonical and noncanonical mode; all
       are sent to the processes in the foreground process group of the termi‐
       nal. If the NOFLSH bit is not set in  c_lflag,  these  characters  also
       flush pending input and output when typed at a terminal. The characters
       shown here are the defaults; the symbolic names of the indices of these
       characters  in  the c_cc array of the termios structure are also shown.
       The characters may be changed.  VINTR (in c_cc) generates a SIGINT sig‐
       nal. This is the normal way to stop a process which is no longer inter‐
       esting, or to regain control in	an  interactive	 program.   VQUIT  (in
       c_cc)  generates	 a  SIGQUIT signal. This is used to cause a program to
       terminate and produce a core image, if possible, in the	file  core  in
       the  current  directory.	  VSUSP	 (in c_cc) generates a SIGTSTP signal,
       which is used to suspend the current process group.  VDSUSP  (in	 c_cc)
       generates  a  SIGTSTP  signal  as <Ctrl-Z> does, but the signal is sent
       when a program attempts to read the <Ctrl-Y>, rather than  when	it  is
       typed.

   Terminal Access Control
       If  a  process  attempts to read from its controlling terminal when the
       process is not in the foreground process group of  the  terminal,  that
       background process group is sent a SIGTTIN signal. This signal normally
       causes the members of that process group	 to  stop.  If,	 however,  the
       process	is  ignoring  SIGTTIN,	has SIGTTIN blocked, or if the reading
       process' process group is orphaned, the read will  return  -1  and  set
       errno to [EIO].	The operation will then not send a signal.

       If  a  process  attempts	 to write to its controlling terminal when the
       process is not in the foreground process group of the terminal, and the
       TOSTOP  bit  is	set in the c_lflag word of the termios structure, that
       background process group is sent a SIGTTOU signal and  the  process  is
       prohibited  from writing. If TOSTOP is not set, or if TOSTOP is set and
       the process is blocking or ignoring the SIGTTOU signal, process	writes
       to  the	terminal  are  allowed, and the SIGTTOU signal is not sent. If
       TOSTOP is set, if the writing process' process group is	orphaned,  and
       if  SIGTTOU  is not blocked by the writing process, the write operation
       returns a -1 with errno set to [EIO], and does not a send a signal.

   Terminal/Window Sizes
       To accommodate terminals and workstations with variable-sized  windows,
       the  terminal driver provides a mechanism for obtaining and setting the
       current terminal size. The driver does not use this information	inter‐
       nally, but only stores it and provides a uniform access mechanism. When
       the size is changed, a  SIGWINCH	 signal	 is  sent  to  the  terminal's
       process group so that knowledgeable programs may detect size changes.

   tty Parameters
       In  contrast  to earlier versions of the tty driver, the POSIX terminal
       parameters and structures are contained	in  a  single  structure,  the
       termios	structure  defined  in	the  sys/termios.h  file. Refer to the
       termios(4) reference page for a complete summary of this file.

   Basic ioctl Calls
       A large number of ioctl(2) calls apply to  terminals.   Some  have  the
       general form:

       #include <sys/termios.h> ioctl(fildes, code, arg) struct termios *arg;

       The  applicable codes are: Gets the termios structure and all its asso‐
       ciated parameters.  The interface delays	 until	output	is  quiescent,
       then  throws away any unread characters.	 Sets the parameters according
       to the termios structure.  Drains the output before setting the parame‐
       ters according to the termios structure. Sets the parameters like TIOC‐
       SETA.  Drains the output and  flushes  the  input  before  setting  the
       parameters according to the termios structure. Sets the parameters like
       TIOCSETA.

       With the following codes arg is ignored: Set “exclusive-use”  mode:  no
       further	opens  are permitted until the file has been closed.  Turn off
       “exclusive-use” mode.

       With the following codes arg is a pointer to an int: If the int pointed
       to  by  arg has a zero value, all characters waiting in input or output
       queues are flushed. Otherwise, the value of the int is  for  the	 FREAD
       and  FWRITE  bits  defined  in the sys/file.h file; if the FREAD bit is
       set, all characters waiting in input queues are	flushed,  and  if  the
       FWRITE bit is set, all characters waiting in output queues are flushed.

   ioctls for Controlling Terminals
       Sets  the terminal as the controlling terminal for the calling process.
       Voids the terminal as a controlling terminal for the  calling  process.
       If  the calling process is not the session leader, the process group of
       the calling process is seet to 0.

       With the following codes, arg is a pointer to an int: The arg parameter
       is  a  pointer  to  the	value representing the process group ID of the
       process group, and is returned by the controlling terminal specified by
       the  filedes  parameter. See tcgetpgrp(3) for more information on error
       codes that can occur if this ioctl  fails.   The	 arg  parameter	 is  a
       pointer	to  the	 value	to which the process group ID for the terminal
       specified by the filedes parameter will be set. This terminal  must  be
       the  controlling	 terminal  and	must  be  associated  with the calling
       process's session. The process group value must match a	process	 group
       ID of a process in the same session as the calling process. See tcsetp‐
       grp for more information on error codes that can occur  if  this	 ioctl
       fails.

   Miscellaneous tty ioctl Codes
       The  following  are  miscellaneous  ioctl  terminal commands.  In cases
       where arguments are required, they are described; arg should  otherwise
       be given as 0.  The argument points to a character that the system pre‐
       tends had been typed on the terminal.  The break bit is set in the ter‐
       minal.	The  break  bit is cleared.  Data terminal ready is set.  Data
       terminal ready is cleared.  Output is stopped as if the ``stop''	 char‐
       acter  had been typed.  Output is restarted as if the ``start'' charac‐
       ter had been typed.  Returns in the int pointed to by arg the number of
       characters  queued  for	output to the terminal.	 Sets the terminal for
       remote input editing.  Sets or clears  the  virtual  console.  The  arg
       parameter  is  a pointer to an integer.	A non zero value sets the vir‐
       tual console to the requesting tty.  A zero value  clears  the  virtual
       console.	  Set  this  to	 write console messages to the virtual console
       rather than /dev/console. Clearing a  virtual  console  causes  console
       messages	 to  resume being sent to /dev/console.	 Only one virtual con‐
       sole may be in effect at a time.	 This ioctl requires superuser	privi‐
       lege.   Returns	in  the int pointed to by arg the number of characters
       immediately readable from  the  argument	 descriptor.  This  works  for
       files, pipes, and terminals.

   Controlling Terminal Modems
       The following ioctls apply to modems: The arg parameter is a pointer to
       an int, which is the value of the modem control state.  The arg parame‐
       ter  is a pointer to an int, which is the value to which the modem con‐
       trol state is to be set.	 Sets all modem bits.  The arg parameter is  a
       pointer	to an int, which specifies the modem bits to be set.  arg is a
       pointer to an int, which specifies the modem bits to be cleared.	  Gets
       all the modem bits and returns them in the int point to by arg.

   Window/Terminal Sizes
       Each terminal has provision for storage of the current terminal or win‐
       dow size in a winsize structure, which has the following format:

       struct winsize {			   unsigned  shortws_row;/*  rows,  in
       characters  */			 unsigned  shortws_col;/*  columns, in
       characters */		       unsigned	 shortws_xpixel;/*  horizontal
       size,  pixels  */		   unsigned shortws_ypixel;/* vertical
       size, pixels */ };

       A value of 0 (zero) in any field is interpreted as  ``undefined;''  the
       entire structure is zeroed on final close.

       The applicable ioctl functions are: The arg parameter is a pointer to a
       struct winsize into which will be placed the current terminal or window
       size  information.  The arg parameter is a pointer to a struct winsize,
       which will be used to set the current terminal or window size  informa‐
       tion.  If  the new information is different than the old information, a
       SIGWINCH signal will be sent to the terminal's process group.

NOTES
       The following System V and BSD ioctls are currently supported as a com‐
       patibility  interface for System V and older BSD system programs.  They
       should not be used in new applications. The ioctl call has the  follow‐
       ing format: ioctl (fdes, cmd, arg)

       The  System V termio ioctls use a pointer to a termio structure for the
       arg parameter.  The following include is	 required  for	the  System  V
       termio ioctls: #include <sys/termio>

       The  parameters	of  the tty driver are set/returned by translating the
       termio structure to/from a termios structure.  Gets  termio  structure.
       Sets  termio  structure.	 Drains output and then sets termio structure.
       Drains output, flushes input, and then sets termio structure.

       The following group of System V ioctls take an integer  value  for  the
       arg parameter.  Sends break.  Sends break.  Sets flow control.  The arg
       parameter uses same values as the POSIX function tcflow() (must include
       <sys/termios.h>)	 Flushes queue(s).  You must include <sys/fcntl.h> for
       valid arg parameters (for example, FREAD for flushing input side).

       The following group of BSD compatibility ioctls use a pointer to a sgt‐
       tyb  structure  for  the	 arg parameter.	 The tty parameters of the tty
       driver are set/returned by translating the sgttyb structure  to/from  a
       termios structure.  Returns tty parameters.  Sets tty parameters.  Sets
       tty parameter without flushing.

       The next group uses a pointer to the local mode bits (an integer value)
       as  their  arg  parameter.   The	 local	mode bits are converted to the
       appropriate POSIX termios flag settings.	 The arg value is  used	 as  a
       mask  to	 set  the local mode bits.  The arg value is used as a mask to
       clear the local mode bits.  The arg value is used to replace  the  cur‐
       rent  setting  of  the  local  mode bits.  The arg parameter is used to
       return the current value of the local mode bits.

       The following group uses a pointer to a ltchars structure as their  arg
       parameter.   The	 local	special	 characters  are  translated  to POSIX
       termios control characters.  Set local control characters.   Get	 local
       control characters.

       The  following  group of BSD compatibility ioctls sets/clears the POSIX
       CLOCAL and HUPCL flags.	The CLOCAL flag turns modem control on/off  in
       the  tty	 driver.    If the arg parameter (a pointer to an integer) for
       TIOCMODEM/TIOCNMODEM is nonzero and the requesting  process  has	 super
       user privileges the change is made permanent.  Otherwise after the last
       close, the tty line reverts back to the default value.  The HUPCL  flag
       determines if the terminal line should be disconnected (that is, DTR is
       non asserted) after the last close. The TIOCHPCL ioctl ignores the  arg
       parameter.  Clears CLOCAL.  Sets CLOCAL.	 Sets HUPCL.

FILES
       Special	file  for tty.	Special files for ttys, where the * (asterisk)
       sign represents the tty number.	Device special file for console.

SEE ALSO
       Functions: ioctl(2), sigvec(2), tcsetattr(3), tcgetattr(3), tcdrain(3),
       tcflush(3), tcsendbreak(3), tcgetpgrp(3), tcsetpgrp(3)

       Commands: csh(1), strchg(1), tset(1), getty(8)

       Files: termios(4)

       Interfaces: atty(7), ldterm(7), modem(7), ttty(7)

       IEEE Std POSIX 1003.1-1988

									tty(7)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server OSF1

List of man pages available for OSF1

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net