Man Linux: Main Page and Category List

NAME

       ttyslot - find the slot of the current user’s terminal in some file

SYNOPSIS

       #include <unistd.h>    /* on BSD-like systems, and Linux */
       #include <stdlib.h>    /* on System V-like systems */

       int ttyslot(void);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       ttyslot(): _BSD_SOURCE || (_XOPEN_SOURCE_EXTENDED &&
       ! _XOPEN_SOURCE >= 500)

DESCRIPTION

       The legacy function ttyslot() returns the index of the  current  user’s
       entry in some file.

       Now "What file?" you ask.  Well, let’s first look at some history.

   Ancient History
       There  used  to  be  a  file /etc/ttys in Unix V6, that was read by the
       init(8) program to find out what to do with each terminal  line.   Each
       line consisted of three characters.  The first character was either '0'
       or '1', where '0' meant "ignore".  The  second  character  denoted  the
       terminal:  '8'  stood  for  "/dev/tty8".   The  third  character was an
       argument to getty(8) indicating the sequence of line speeds to try ('-'
       was: start trying 110 baud).  Thus a typical line was "18-".  A hang on
       some line was solved by changing the '1'  to  a  '0',  signaling  init,
       changing back again, and signaling init again.

       In  Unix  V7  the format was changed: here the second character was the
       argument to getty(8) indicating the sequence of line speeds to try ('0'
       was:  cycle  through  300-1200-150-110  baud;  '4'  was for the on-line
       console DECwriter) while the rest of the line contained the name of the
       tty.  Thus a typical line was "14console".

       Later  systems  have more elaborate syntax.  System V-like systems have
       /etc/inittab instead.

   Ancient History (2)
       On the other hand, there is  the  file  /etc/utmp  listing  the  people
       currently  logged  in.   It  is maintained by login(1).  It has a fixed
       size, and the appropriate index in the file was determined by  login(1)
       using  the  ttyslot()  call to find the number of the line in /etc/ttys
       (counting from 1).

   The semantics of ttyslot
       Thus, the function ttyslot()  returns  the  index  of  the  controlling
       terminal  of  the  calling  process  in the file /etc/ttys, and that is
       (usually) the same as the index of the entry for the  current  user  in
       the  file  /etc/utmp.   BSD still has the /etc/ttys file, but System V-
       like systems do not, and hence cannot  refer  to  it.   Thus,  on  such
       systems  the  documentation  says  that  ttyslot()  returns the current
       user’s index in the user accounting data base.

RETURN VALUE

       If successful, this function returns the slot number.  On error  (e.g.,
       if none of the file descriptors 0, 1 or 2 is associated with a terminal
       that occurs in this data base) it returns 0 on Unix V6 and V7 and  BSD-
       like systems, but -1 on System V-like systems.

CONFORMING TO

       SUSv1;  marked  as  LEGACY  in  SUSv2;  removed in POSIX.1-2001.  SUSv2
       requires -1 on error.

NOTES

       The utmp file is found various  places  on  various  systems,  such  as
       /etc/utmp, /var/adm/utmp, /var/run/utmp.

       The  glibc2  implementation of this function reads the file _PATH_TTYS,
       defined in <ttyent.h> as "/etc/ttys".  It returns 0  on  error.   Since
       Linux systems do not usually have "/etc/ttys", it will always return 0.

       Minix also has fttyslot(fd).

SEE ALSO

       getttyent(3), ttyname(3), utmp(5)

COLOPHON

       This page is part of release 3.24 of the Linux  man-pages  project.   A
       description  of  the project, and information about reporting bugs, can
       be found at http://www.kernel.org/doc/man-pages/.