*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->HP-UX 11i man pages -> pty (7)              
Title
Content
Arch
Section
 

Contents


 pty(7)                                                               pty(7)




 NAME    [Toc]    [Back]
      pty - pseudo terminal driver

 DESCRIPTION    [Toc]    [Back]
      The pty driver provides support for a device-pair termed a pseudo
      terminal.  A pseudo terminal is a pair of character devices, a master
      device and a slave device.  The slave device provides to application
      processes an interface identical to that described in termio(7).
      Unlike all other devices that provide the interface described in
      termio(7), the slave device does not have a hardware device behind it.
      Instead, it has another process manipulating it through the master
      half of the pseudo terminal.  Thus anything written on the master
      device is given to the slave device as input, and anything written on
      the slave device is presented as input on the master device.

                             ----------------
                            | pty functions  |
           Application <--> |----------------| <--> Server
            Processes       | Slave | Master |       Process
                            | (pts) | (ptm)  |
                             ----------------

    Open and Close Processing    [Toc]    [Back]
      The slave side of the pty interprets opening or closing the master
      side as a modem connection or disconnection on a real terminal.  Only
      one open to the master side of a pty is permitted.  An attempt to open
      an already open master side returns -1 and sets the external variable
      errno to [EBUSY].  An attempt to open the master side of a pty that
      has a slave with an open file descriptor returns -1 and sets errno to
      [EBUSY].  The potential problem of ptys being found busy at opens can
      be avoided by using the clone open functionality discussed in the next
      section.

      An attempt to open a nonexistent pty returns -1 and sets errno to
      [ENXIO].  If O_NDELAY is not specified, opens on the slave side hang
      until the master side is opened.  If O_NDELAY is specified, opens on
      the slave side return error if the master side is closed.  Any ioctl()
      or write() request made on the slave side of a pty after the master
      side is closed returns -1 and sets the external variable errno to
      [EIO].  A read() request made on the slave side of a pty after the
      master side is closed returns 0 bytes.  Closing the master side of a
      pty sends a SIGHUP hangup signal to the tty process group number of
      the corresponding slave side and flushes pending input and output.

    Clone Open    [Toc]    [Back]
      In typical pty usage, there is no preference among pty pairs.  Thus,
      it is useful to be able to issue a single open() that internally opens
      any available pty.  An open on /dev/ptym/clone returns an open file
      descriptor of a free master pty device.  If there are no free devices,
      the open returns -1 and sets errno to [EBUSY].  The name of the slave
      device corresponding to the opened master device can be found through



 Hewlett-Packard Company            - 1 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




      a ptsname() request.

    Processing ioctl() Requests    [Toc]    [Back]
      By default, any ioctl() request defined by termio(7) is recognized by
      both the master and slave sides of a pty.  These ioctl() requests are
      processed by the pty driver as specified by termio(7).  In addition,
      the ioctl() requests defined below are recognized by the master side
      of a pty.  The slave side only recognizes ioctl() requests defined by
      termio(7).  An ioctl() request made on the slave side of a pty after
      the master side is closed returns -1 and sets the external variable
      errno to [EIO].  An ioctl() request not recognized by the pty returns
      -1 and sets the external variable errno to [EINVAL].  Note that some
      of the master-side-only ioctl() requests affect which ioctl() requests
      are recognized by the master and slave side of the pty.  These
      master-side-only ioctl() requests also affect the way recognized
      ioctl() requests, open() requests, and close() requests are processed
      by the pty driver.

      The following ioctl() requests, defined in <sys/ptyio.h>, apply only
      to the master side of pty:

      TIOCSIGSEND    Cause a signal to be sent from the slave side of the
                     pty to the current tty process group of the slave side.
                     The value of the parameter is taken to be the signal
                     number sent.  An [EINVAL] error is returned and no
                     signal is sent if the specified signal number does not
                     refer to a legitimate signal (see signal(5)).  Note
                     that this request allows the server process to send
                     signals to processes not owned by the same user ID.

      TIOCTTY        Enable or disable all termio processing by a pty.
                     termio processing is enabled if the int addressed by
                     arg is nonzero and disabled if the int addressed by arg
                     is zero.  By default, termio processing is enabled.
                     termio processing refers to processing of input and
                     output described by termio(7) (such as tab expansion),
                     as well as the processing of the ioctl() requests
                     described by termio(7).  When disabled, all input and
                     output data is passed through the pty without
                     modification.  Issuing a TIOCTTY ioctl() request
                     flushes all data buffered in the pseudo terminal and
                     releases any processes blocked waiting for data.
                     Enabling and disabling TIOCTTY affects the operation of
                     the following ioctl() requests: TIOCPKT, TIOCREMOTE,
                     TIOCBREAK, TIOCSTOP, TIOCSTART, TIOCTRAP, and
                     TIOCMONITOR.

                     When TIOCTTY is enabled, all termio ioctl() requests
                     execute as specified in termio(7), regardless of the
                     side from which the ioctl() request is made.  When
                     TIOCTTY is disabled, master side termio ioctl()



 Hewlett-Packard Company            - 2 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                     requests set and return the the external variable errno
                     to [EINVAL].  Slave side termio ioctl() requests are
                     processed like any other ioctl() request when TIOCTTY
                     is disabled.  In particular, slave side termio ioctl()
                     requests set and return the external variable errno to
                     [EINVAL] when both TIOCTTY and TIOCTRAP are disabled.
                     (See the discussion of ioctl(), open(), and close()
                     trapping below).  ioctl() requests not defined by
                     termio(7) are not affected by the state of TIOCTTY.

                     Data written through a pseudo terminal with TIOCTTY
                     disabled is handled in a manner similar to data flowing
                     through a pipe.  A write request blocks in the pty
                     until all data has been written into the pty.  A read
                     request blocks if there is no data available unless the
                     O_NDELAY flag is set (see fcntl(2)).  When data is
                     available to be read, the read request returns whatever
                     is available, and does not wait for the number of bytes
                     requested to be satisfied.  The number of bytes a pty
                     can contain in its internal memory is implementation
                     dependent, but is at least 256 bytes in each direction.
                     For example, a write on the slave side of a pty of 1024
                     bytes might be read on the master side by four read
                     requests returning 256 bytes each.  The size of the
                     chunks of data that are read is not guaranteed to be
                     consistent, but no data is lost.

      The following ioctl() requests, defined in <sys/ptyio.h>, apply only
      to the master side of a pty.  In particular, these ioctl() requests
      enable/disable specific modes of pty driver operation.  These ioctl()
      requests work in series with TIOCTTY; that is, the mode must be
      enabled by its ioctl() request and TIOCTTY must be enabled for the
      mode to operate.  The mode can be enabled or disabled regardless of
      the state of TIOCTTY.

      TIOCPKT        Enable or disable packet mode.  Packet mode is enabled
                     if the int addressed by arg is nonzero and disabled if
                     the int addressed by arg is zero.  By default, packet
                     mode is disabled.  When applied to the master side of a
                     pseudo terminal, each subsequent read() from the master
                     side returns data written on the slave part of the
                     pseudo terminal preceded by a zero byte (symbolically
                     defined as TIOCPKT_DATA), or a single byte reflecting
                     control status information.  The value of such a status
                     byte is composed of zero or more bit flags:

                     TIOCPKT_FLUSHREAD    [Toc]    [Back]
                          The read queue for the slave side has been
                          flushed.





 Hewlett-Packard Company            - 3 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                     TIOCPKT_FLUSHWRITE    [Toc]    [Back]
                          The write queue for the slave side has been
                          flushed.

                     TIOCPKT_STOP    [Toc]    [Back]
                          Data flowing from the slave side of the pty to the
                          master side has been stopped by means of ^S,
                          TIOCSTOP, or TCXONC.

                     TIOCPKT_START    [Toc]    [Back]
                          Data flowing from the slave side of the pty to the
                          master side has been restarted.

                     TIOCPKT_DOSTOP    [Toc]    [Back]
                          Stop and start characters have been set to ^S or
                          ^Q.

                     TIOCPKT_NOSTOP    [Toc]    [Back]
                          Stop and start characters are set to something
                          other than ^S or ^Q.

      TIOCREMOTE     Enable or disable remote mode.  Remote mode is enabled
                     if the int value of arg is nonzero and disabled if the
                     int value of arg is zero.  By default, remote mode is
                     disabled.  Remote mode is independent of packet mode.
                     This mode causes input to the pseudo terminal to be
                     flow controlled and not input edited (regardless of the
                     terminal mode).  Each write to the master side produces
                     a record boundary for the process reading the slave
                     side.  In normal usage, writing data is like typing the
                     data as a line on a terminal; writing zero bytes is
                     equivalent to typing an end-of-file character (that is,
                     the EOF character as defined in termio(7)).  The data
                     read by the slave side is identical to the data written
                     on the master side.  Data written on the slave side and
                     read on the master side with TIOCREMOTE enabled is
                     still subject to the normal termio(7) processing.
                     TIOCREMOTE can be used when doing remote line editing
                     in a window manager, or whenever flow-controlled input
                     is required.  Issuing a TIOCMONITOR ioctl() request
                     flushes all data buffered in the pseudo terminal.

      The following ioctl() requests, defined in <sys/ptyio.h>, apply only
      to the master side of pty.  In particular, these ioctl() requests are
      only recognized when TIOCTTY is enabled.  When TIOCTTY is disabled,
      these ioctl() requests set and return the external variable errno to
      [EINVAL].

      TIOCBREAK      Cause a break operation to be done on the slave side of
                     the pty, as if a user had pressed the break key on a
                     real terminal.  Takes no parameter.



 Hewlett-Packard Company            - 4 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




      TIOCSTOP       Stop data flowing from the slave side of the pty to the
                     master side (equivalent to typing ^S).  Takes no
                     parameter.

      TIOCSTART      Restart output (stopped by TIOCSTOP or by typing ^S).
                     Takes no parameter.

    Flow-Control Input and Output Processing    [Toc]    [Back]
      The following terms are used to describe the flow of data through
      pseudo terminals.  INPUT refers to data flowing from the master side
      of a pty to the slave side.  OUTPUT refers to data flowing from the
      slave side of a pty to the master side.

      When packet mode (TIOCPKT) is disabled and INPUT is stopped (see
      IXOFF, input modes, in termio(7)), the next read() from the master
      side of a pty returns a STOP character.  When INPUT is restarted, the
      next read() from the master side returns a START character.  If packet
      mode (TIOCPKT) is enabled, the STOP or START character is preceded by
      a data packet indicator (TIOCPKTDATA).  select() should be used by the
      master-side server before each write() request to properly handle
      INPUT flow control (see select(2)).

      When INPUT flow control is enabled, write() and select() are handled
      as follows: Write-selects on the master side of a pty return true only
      if INPUT has not been stopped.  If INPUT becomes stopped while data is
      being written into the master side of a pty, the write returns with
      the number of bytes written before INPUT was stopped.  Writes done
      after INPUT is stopped return immediately with zero bytes written.

      When packet mode (TIOCPKT) is disabled and OUTPUT is stopped (see
      IXON, input modes in termio(7)), each subsequent read() from the
      master side of a pty returns with no data read.  When OUTPUT is
      restarted, each subsequent read() from the master side returns data
      written on the slave side.  If packet mode (TIOCPKT) is enabled, the
      first read() after OUTPUT has been stopped returns a TIOCPKTSTOP
      packet.  All subsequent reads from the master side while OUTPUT is
      stopped returns a TIOCPKTDATA packet with no data.  When OUTPUT is
      restarted, the next read() from the master side returns a TIOCPKTSTART
      packet.  All subsequent reads from the master side return data written
      on the slave side preceded by a TIOCPKTDATA packet.  select() should
      be used by the master-side server before each read() to properly
      handle OUTPUT flow control.  Otherwise, reads from the master side of
      a pty will not be prevented when OUTPUT is stopped.

    Trapping ioctl(), open(), close() Requests
      When trapping is enabled, the master side is notified when the
      application on its slave side makes an ioctl(), open(), or close()
      request.  For trapped ioctl() and open() requests, the slave side is
      blocked (that is, the request does not complete) until the server on
      its master side acknowledges the trapped request.  For trapped close()
      requests, the slave slave does not block for an acknowledgement.



 Hewlett-Packard Company            - 5 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




      select() should be used by the master side server to receive
      notification of trapped ioctl(), open(), and close() requests.  When
      one of these requests is trapped, the select() returns with an
      "exceptional condition" indicated for the slave side's file
      descriptor.  Other mechanisms for receiving notification of trapped
      requests are defined below, but these mechanisms should be used only
      if select() is not available.

      When trapping is disabled (default condition), unrecognized slave
      ioctl() requests return an error, with the external variable errno set
      to [EINVAL].  The only ioctl() requests recognized by the slave side
      are those defined by termio(7) and only when TIOCTTY is enabled.  When
      TIOCTTY is disabled, no ioctl() requests are recognized by the slave
      side.  If trapping is enabled and the master side closes, trapping is
      disabled.  If the master closes during the middle of a handshake with
      the slave, the handshake is done automatically.

      Trapping occurs in two forms that are identified by the ioctl()
      requests that enable or disable them - TIOCTRAP and TIOCMONITOR.
      These two forms are distinguished by the types of requests they affect
      and by the capabilities they provide.  Trapping open() and close()
      requests is enabled or disabled by TIOCTRAP.  Trapping ioctl()
      requests not defined by termio(7) are enabled or disabled by TIOCTRAP.
      Trapping ioctl() requests defined by termio(7) are enabled or disabled
      by TIOCTRAP only when TIOCTTY is also disabled.  When TIOCTTY is
      enabled, trapping ioctl() requests defined by termio(7) are enabled or
      disabled by TIOCMONITOR.  Briefly, both TIOCTRAP and TIOCMONITOR
      trapping allow the server on the master side to examine the request's
      parameters, the pid making the request, etc.  In addition, TIOCTRAP
      trapping allows the server to modify the parameters and return values
      of an ioctl() request.

      The following ioctl() calls apply only to the master side of a pty and
      pertain to trapping ioctl(), open(), and close() requests.  They are
      defined in <sys/ptyio.h>:

      TIOCTRAP       Enable or disable trapping of ioctl(), open(), and
                     close() requests made by the application on the slave
                     side of a pty.  Trapping is enabled if the int
                     addressed by arg is nonzero and disabled if the int
                     addressed by arg is zero.  By default, TIOCTRAP
                     trapping is disabled.

      TIOCTRAPSTATUS Check for a pending ioctl(), open(), or close() trap.
                     The argument points to an int that is set to one if a
                     trap is pending and to zero if nothing is pending.  Use
                     TIOCTRAPSTATUS when the preferred method of a select()
                     "exceptional condition" is not available.

      TIOCREQCHECK   Return the trapped ioctl(), open(), or close()
                     information to the master side.  Use TIOCREQCHECK in



 Hewlett-Packard Company            - 6 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                     response to either a select() "exceptional condition"
                     or a TIOCTRAPSTATUS indicating that a trap is pending.
                     A TIOCREQCHECK reads the pending ioctl(), open(), or
                     close() information into the memory pointed to by the
                     arg of TIOCREQCHECK.  The information takes the form of
                     the following request_info structure, defined in
                     <sys/ptyio.h>:



                     struct request_info {
                         int request;
                         int argget;
                         int argset;
                         pid_t pgrp;
                         pid_t pid;
                         int errno_error;
                         int return_value;
                     };

                     All elements of request_info refer to the slave side of
                     the pty and include the following:

                     request        The ioctl() command received.

                     argget         The ioctl() request applied to master
                                    side to receive the trapped ioctl()
                                    structure, if one exists (a zero value
                                    means there is none).  (When nonzero,
                                    argget is a TIOCARGGET request with the
                                    size field precomputed.)

                     argset         The ioctl() request applied to master
                                    side to send back the resulting ioctl()
                                    structure, if one exists (a zero value
                                    means there is none).  (When nonzero,
                                    argset is a TIOCARGSET request with the
                                    size field precomputed.)

                     pgrp           The process group number of the process
                                    doing the operation.

                     pid            The process ID of the process doing the
                                    operation.

                     errno_error    The errno external variable error code
                                    (initialized to zero) returned by
                                    ioctl() on the slave side.  When open
                                    error mode is enabled, errno_error can
                                    be used to return an error for trapped
                                    slave pty open() requests.  See the



 Hewlett-Packard Company            - 7 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                                    discussion of the TIOCSMODES ioctl() for
                                    further information on open error mode.

                     return_value   The success value (initialized to zero)
                                    returned by ioctl() on the slave side
                                    when errno_error is not set.

                                    When the ioctl() argument received on
                                    the slave side is not a pointer, its
                                    value is stored as four bytes
                                    retrievable with an ioctl() request to
                                    the master side equal to argget.

                                    When an open() or close() is being
                                    passed, request is set to TIOCOPEN or
                                    TIOCCLOSE, respectively.  For TIOCOPEN
                                    and TIOCCLOSE, both argget and argset
                                    are zero because there is no ioctl()
                                    structure.  When TIOCTTY is enabled, the
                                    termio(7) definition of open/close is
                                    executed first before being passed to
                                    the master side.  Note that while all
                                    opens are trapped, only the last close
                                    on a particular inode for a pty slave
                                    side is trapped by the pty.

                                    A TIOCREQCHECK returns the external
                                    variable errno error [EINVAL] if no
                                    ioctl(), open(), or close() trap is
                                    pending.  Accordingly, a TIOCREQCHECK
                                    that returns [EINVAL] in response to a
                                    select() "exceptional condition"
                                    indicates that the trapped ioctl(),
                                    open(), or close() request was
                                    terminated by a signal after select()
                                    returned.

      TIOCREQGET     Identical to TIOCREQCHECK except when no ioctl(),
                     open(), or close() trap is pending.  A TIOCREQGET
                     blocks until a slave side ioctl(), open(), or close()
                     is trapped; whereas a TIOCREQCHECK returns [EINVAL].
                     Use TIOCREQGET when neither the preferred method of a
                     select() "exceptional condition" nor the master side
                     ioctl() TIOCTRAPSTATUS is available.

      TIOCREQSET     Complete the handshake started by a previous
                     TIOCREQCHECK or TIOCREQGET.  The argument should point
                     to the request_info structure, as defined by the
                     TIOCREQCHECK.





 Hewlett-Packard Company            - 8 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                     Before doing this ioctl() request to complete the
                     handshake, the server should set errno_error to an
                     external variable errno error value to be passed back
                     to the slave side.  If there is no error, errno_error
                     can be left alone because the pty initializes it to
                     zero.  Also, when there is no error, return_value
                     should be set if other than a zero result is desired.
                     The server can set return_value and errno_error if the
                     trapped request is an ioctl() and may set errno_error
                     for a trapped open() if open error mode is enabled.
                     Setting either return_value or errno_error for a
                     trapped close() affects neither the return value of the
                     request nor the external variable errno value of the
                     slave side.  Setting either return_value or errno_error
                     for a trapped open() affects neither the return value
                     of the request nor the external variable errno value of
                     the slave side unless open error mode is enabled.  Open
                     error mode allows the server to return an error to a
                     trapped slave open() by setting errno_error.  Unlike
                     ioctl() requests, setting return_value never affects
                     slave pty open() requests.  Further, setting either
                     return_value or errno_error does not cause TIOCREQSET
                     to return an error to the server.

                     If the TIOCREQSET request is made and the request value
                     in the passed request_info structure does not equal the
                     trapped value, the external variable errno is set and
                     returned as [EINVAL].  [EINVAL] is also returned if
                     there are no trapped ioctl(), open(), or close()
                     requests.  If the trapped request has been interrupted
                     by a signal between the time that the server has done
                     the TIOCREQGET and the TIOCREQSET, the TIOCREQSET
                     request returns [EINVAL].

      TIOCGFLAGS     Get the file status flags associated with a trapped
                     request.  Upon successful return, the ioctl() returns
                     in an integer referenced by arg the file status flags
                     for the trapped request.  The flag definitions in
                     <sys/file.h> can be used to interpret the flags.  If no
                     trap is currently pending, the TIOCGFLAGS ioctl()
                     returns an error with the external variable errno set
                     to [EINVAL].

      TIOCMONITOR    Enable or disable read-only trapping of termio ioctl()
                     requests.  TIOCMONITOR trapping is enabled if the int
                     addressed by arg is nonzero and disabled if the int
                     addressed by arg is zero.  By default, TIOCMONITOR
                     trapping is disabled.  TIOCMONITOR works in series with
                     TIOCTTY; that is, the TIOCMONITOR trapping must be
                     enabled and TIOCTTY must be enabled for termio ioctl()
                     requests to be trapped by TIOCMONITOR.  TIOCMONITOR



 Hewlett-Packard Company            - 9 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                     trapping can be enabled or disabled regardless of the
                     state of TIOCTTY.

                     When TIOCTTY is disabled, termio ioctl() requests are
                     not trapped by TIOCMONITOR.  However, ioctl() requests
                     are trapped by TIOCTRAP if TIOCTTY is disabled and
                     TIOCTRAP is enabled.  TIOCTRAP trapping allows the
                     master side server to modify the parameters and return
                     values of an ioctl() request, whereas TIOCTMONITOR
                     trapping does not.

                     TIOCMONITOR trapping allows the server on the master
                     side to know when characteristics of the line
                     discipline in the pty are changed by an application on
                     its slave side.  The mechanism for handshaking termio
                     requests trapped by TIOCMONITOR is the same as the
                     mechanism described above for requests trapped by
                     TIOCTRAP.  (It is recommended that termio ioctl()
                     requests be used on the master side to interrogate the
                     configured state of the line discipline in the pty.
                     This compensates for the window of time before
                     TIOCMONITOR is enabled, when termio ioctl() requests
                     are not trapped.)

      When using select() on the master side of a pty, the "exceptional
      condition" refers to an open(), close(), or ioctl() request pending on
      the slave side, while "ready for reading or writing" indicates that
      the device can be read from or written to successfully.

      Of the ioctl() requests subject to being trapped, only one-per-pty can
      be handled at a time.  This means that when an application does a
      non-termio ioctl() request to the slave side, all other ioctl()
      requests to the same pty slave side are blocked until the first one is
      handshaked back by the master side.  (ioctl() requests that are not
      trapped, such as termio when TIOCTTY is enabled and TIOCMONITOR is
      disabled, are not blocked.) This permits the implementation of
      indivisible operations by an ioctl() call on the slave side that is
      passed to the server process.

      In summary, the following method of handling trapped ioctl(), open(),
      and close() requests is preferred:

           1.   Call select().  This system call blocks the master side
                until a slave side ioctl(), open(), or close() request is
                trapped.

           2.   Make TIOCREQCHECK ioctl() request.  This step returns
                information about a trapped ioctl(), open(), or close()
                request.  If TIOCREQCHECK returns the external variable
                errno error [EINVAL], loop back to the select() call.




 Hewlett-Packard Company           - 10 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




           3.   Make argget ioctl() request.  This optional step is used if
                argget is nonzero and the server wants to do more than just
                reject the trapped slave ioctl() request.

           4.   Make argset ioctl() request.  This optional step is done if
                argset is nonzero and the server wants to pass back a
                modified ioctl() structure.  It is done after the trapped
                ioctl() request is processed via the server on the master
                side.

           5.   Set errno_error and return_value.  If the trapped request is
                an ioctl(), set errno_error appropriately.  If the
                appropriate value for errno_error is zero, return_value must
                be set.  If open error mode is enabled, set errno_error to a
                nonzero value to return an error to a trapped open()
                request.

           6.   Make TIOCREQSET ioctl() request.  This step completes the
                trapped ioctl(), open(), or close() request.

      While a process is waiting in the slave side of the pty for the server
      to complete a handshake, it is susceptible to receiving signals.  The
      following master side ioctl() request allows the server process to
      control how the pty responds when a signal attempts to interrupt a
      trapped open() or ioctl() request:

      TIOCSIGMODE    Set the signal handling state of the pty to the mode
                     specified as the argument.  The mode can have three
                     values, which are TIOCSIGBLOCK, TIOCSIGABORT, and
                     TIOCSIGNORMAL.

                     TIOCSIGBLOCK    [Toc]    [Back]
                          Cause some signals to be postponed that are
                          destined for the slave-side process whose open()
                          or ioctl() request is trapped.  Signals are
                          postponed if they would otherwise cause the
                          process to jump to an installed signal handler.
                          Signals are not postponed if they would otherwise
                          cause the process to abort or if they are being
                          ignored.  When the server process completes the
                          handshake by means of the TIOCREQSET ioctl()
                          request, the process returns to the calling
                          program and any pending signals are then acted
                          upon.  Any signals that the user has blocked by
                          means of sigblock() continues to be blocked.

                     TIOCSIGABORT    [Toc]    [Back]
                          Prevent a trapped open() or ioctl() request from
                          being restarted.  The server process sets this
                          mode when it wants the interrupted requests to
                          return to the calling program with an [EINTR]



 Hewlett-Packard Company           - 11 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                          error.

                     TIOCSIGNORMAL    [Toc]    [Back]
                          This is the default mode of the pty.  If a signal
                          interrupts a trapped open() or ioctl() request,
                          the user's signal handler routine can specify
                          whether the request is to be restarted.  If the
                          request is restarted, it executes again from the
                          beginning and the server has to make another
                          TIOCREQGET request to start the handshake over
                          again.  If the user's signal handler routine
                          specifies that the interrupted request should not
                          be restarted, the request returns to the calling
                          program with [EINTR] upon completion of the signal
                          handler.  Note that the restarted request is not
                          necessarily the very next one to be trapped.

      The following ioctl() requests, defined in <sys/ptyio.h>, provide a
      mechanism to get and set pty modes.  Five of the modes can also be
      manipulated using other ioctl() requests discussed previously.  See
      the bit definitions for the ioctl() equivalents.  The effect of
      enabling or disabling them by either means is identical.  Commonly, an
      application would use the TIOCGMODES ioctl() to get the pty modes
      currently in effect, set or clear the bits for the modes being
      changed, and issue a TIOCGMODES ioctl() to effect the desired change.

      TIOCGMODES     Get the pty modes currently in effect.  The ioctl()
                     returns in a long referenced by arg bits indicating the
                     states of various pty modes.  If a bit is set, the
                     associated mode is enabled.  If a bit is clear, the
                     associated mode is disabled.  Unused bits are clear.
                     The meaning of the bits is described under the
                     description of the TIOCSMODES ioctl().

      TIOCSMODES     Set the pty modes according to the value of type long
                     referenced by arg.  Unused bits are ignored but should
                     be set to zero.  The bit values for pty modes are
                     listed below.

                     PM_REMOTE    [Toc]    [Back]
                          Enable or disable remote mode.  See the discussion
                          of the TIOCREMOTE ioctl().

                     PM_TTY    [Toc]    [Back]
                          Enable or disable tty mode.  See the discussion of
                          the TIOCTTY ioctl().

                     PM_PKT    [Toc]    [Back]
                          Enable or disable packet mode.  See the discussion
                          of the TIOCPKT ioctl().




 Hewlett-Packard Company           - 12 -   HP-UX 11i Version 2: August 2003






 pty(7)                                                               pty(7)




                     PM_TRAP    [Toc]    [Back]
                          Enable or disable trap mode.  See the discussion
                          of the TIOCTRAP ioctl().

                     PM_MONITOR    [Toc]    [Back]
                          Enable or disable monitor mode.  See the
                          discussion of the TIOCMONITOR ioctl().

                     PM_OPEN_ERROR    [Toc]    [Back]
                          Enable or disable open error mode.  Open error
                          mode allows a server process to return an error to
                          a trapped slave pty open() through the TIOCREQSET
                          ioctl().  When open error mode is enabled, the
                          server may return a trapped open() with an error
                          by setting the errno_error field in the
                          request_info structure passed to the TIOCREQSET
                          ioctl().  When open error mode is disabled (the
                          default state), setting errno_error to handshake a
                          slave open() has no effect.  Note that unlike the
                          ioctl() trap handshaking, setting return_value has
                          no effect for a slave open() regardless of the
                          state of open error mode.  See the discussion of
                          the TIOCREQSET ioctl() for further details on
                          handshaking a trapped request.

 WARNINGS    [Toc]    [Back]
      The slave side cannot indicate an end-of-file condition to the master
      side.

      When using TIOCREMOTE, a single write() request to the master side of
      greater than 256 bytes may result in multiple smaller records being
      read from the slave side instead of only one record.

 AUTHOR    [Toc]    [Back]
      pty was developed by the University of California, Berkeley.

 FILES    [Toc]    [Back]
      /dev/ptym/pty[a-ce-z][0-9][0-9]         master pseudo terminals
      /dev/ptym/pty[a-ce-z][0-9][0-9][0-9]    master pseudo terminals
      /dev/ptym/pty[a-ce-z][0-9a-f]           master pseudo terminals
      /dev/pty[pqr][0-9a-f]                   master pseudo terminals
      /dev/pty/tty[a-ce-z][0-9][0-9]          slave pseudo terminals
      /dev/pty/tty[a-ce-z][0-9][0-9][0-9]     slave pseudo terminals
      /dev/pty/tty[a-ce-z][0-9a-f]            slave pseudo terminals
      /dev/tty[pqr][0-9a-f]                   slave pseudo terminals

 SEE ALSO    [Toc]    [Back]
      close(2), fcntl(2), ioctl(2), open(2), read(2), select(2),
      sigblock(2), write(2), ptsname(3C), signal(5), termio(7).


 Hewlett-Packard Company           - 13 -   HP-UX 11i Version 2: August 2003
[ Back ]
      
      
 Similar pages
Name OS Title
pts HP-UX STREAMS slave pty (pseudo-terminal) driver
ptm HP-UX STREAMS master pty (pseudo-terminal) driver
telm HP-UX STREAMS Telnet slave (pseudo-terminal) driver, STREAMS Telnet master driver (used by telnetd only), respective
tels HP-UX STREAMS Telnet slave (pseudo-terminal) driver, STREAMS Telnet master driver (used by telnetd only), respective
unlockpt FreeBSD pseudo-terminal access functions
ptsname FreeBSD pseudo-terminal access functions
posix_openpt FreeBSD pseudo-terminal access functions
grantpt FreeBSD pseudo-terminal access functions
ptsname IRIX get name of the slave pseudo-terminal device
pty FreeBSD auxiliary functions to obtain a pseudo-terminal
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service