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

  man pages->OpenBSD man pages -> forkpty (3)              



NAME    [Toc]    [Back]

     openpty, login_tty, forkpty - tty utility functions

SYNOPSIS    [Toc]    [Back]

     #include <termios.h>
     #include <util.h>

     openpty(int  *amaster,  int  *aslave,  char  *name,   struct
termios *termp,
             struct winsize *winp);

     login_tty(int fd);

     forkpty(int *amaster, char *name, struct termios *termp,
             struct winsize *winp);

DESCRIPTION    [Toc]    [Back]

     The  openpty(), login_tty(), and forkpty() functions perform
     on ttys and pseudo-ttys.

     The openpty() function finds an available pseudo-tty and returns file descriptors
  for  the  master and slave in amaster and aslave.
If name is
     non-null, the filename of the slave is returned in  name  (a
string of at
     least  16  characters).   If termp is non-null, the terminal
parameters of
     the slave will be set to the values in termp.   If  winp  is
non-null, the
     window  size of the slave will be set to the values in winp.

     The openpty() function works in the following way: first  it
attempts to
     allocate  the  pseudo-tty  through  the /dev/ptm device (see
pty(4) for details)
 and if that fails it searches for a  free  pseudo-tty
by iterating
     through  all  existing  pseudo-tty  devices in /dev.  When a
free pseudo-tty
     is found, its ownership is changed to the UID of the caller,
     are  set to correct values, and all earlier uses of that device are revoked
 (see revoke(2) for details).   The  first  method  can
work for any user,
 the second method requires super-user privileges in most

     The login_tty() function prepares for a login on the tty  fd
(which may be
     a  real tty device, or the slave of a pseudo-tty as returned
by openpty())
     by creating a new session, making fd the controlling  terminal for the
     current  process,  setting fd to be the standard input, output, and error
     streams of the current process, and closing fd.

     The  forkpty()  function  combines  openpty(),  fork(),  and
login_tty() to
     create  a  new  process operating in a pseudo-tty.  The file
descriptor of
     the master side of the pseudo-tty is  returned  in  amaster,
and the filename
  of the slave in name if it is non-null.  The termp and
winp parameters,
 if non-null, will determine  the  terminal  attributes
and window size
     of the slave side of the pseudo-tty.

RETURN VALUES    [Toc]    [Back]

     If  a  call  to  openpty(), login_tty(), or forkpty() is not
successful, -1
     is returned and errno is set to indicate the error.   Otherwise,
     openpty(),  login_tty(),  and the child process of forkpty()
return 0, and
     the parent process of forkpty() returns the  process  ID  of
the child process.

FILES    [Toc]    [Back]


ERRORS    [Toc]    [Back]

     openpty() will fail if:

     [ENOENT]      There are no available ttys.

     login_tty() will fail if ioctl() fails to set fd to the controlling terminal
 of the current process.  forkpty() will fail if either
openpty() or
     fork() fails.

SEE ALSO    [Toc]    [Back]

     fork(2), revoke(2), pty(4)

OpenBSD      3.6                         November     4,     1996
[ Back ]
 Similar pages
Name OS Title
login NetBSD login utility functions
mp IRIX C multiprocessing utility functions
logout OpenBSD login utility functions
logwtmp NetBSD login utility functions
logout NetBSD login utility functions
login OpenBSD login utility functions
logwtmp OpenBSD login utility functions
mp IRIX C multiprocessing utility functions
vlmatchfloat IRIX VL fraction list utility functions
pw_prompt OpenBSD utility functions for interactive passwd file updates
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service