GETLOGIN(3)         Linux Programmer's Manual         GETLOGIN(3)

NAME
       getlogin, cuserid - get user name

SYNOPSIS
       #include <unistd.h>

       char * getlogin ( void );

       #include <stdio.h>

       char * cuserid ( char *string );

DESCRIPTION
       getlogin returns a pointer to a string containing the name
       of the user logged in on the controlling terminal  of  the
       process,  or  a null pointer if this information cannot be
       determined.  The string is statically allocated and  might
       be  overwritten on subsequent calls to this function or to
       cuserid.

       cuserid returns a pointer to a string  containing  a  user
       name associated with the effective user ID of the process.
       If string is not a null pointer, it  should  be  an  array
       that can hold at least L_cuserid characters; the string is
       returned in this array.  Otherwise, a pointer to a  string
       in  a  static  area is returned. This string is statically
       allocated and might be overwritten on subsequent calls  to
       this function or to getlogin.

       The  macro L_cuserid is an integer constant that indicates
       how long an array you might need to  store  a  user  name.
       L_cuserid is declared in stdio.h.

       These  functions  let your program identify positively the
       user who is running (cuserid) or the user  who  logged  in
       this  session  (getlogin).   (These can differ when setuid
       programs are involved.)

       For most purposes, it is more useful to use  the  environ-
       ment  variable  LOGNAME to find out who the user is.  This
       is more flexible precisely because the user can  set  LOG-
       NAME arbitrarily.

ERRORS
       ENOMEM Insufficient memory to allocate passwd structure.

FILES
       /etc/passwd             password database file
       /etc/utmp  (or  /var/adm/utmp,  or wherever your utmp file
       lives these days - the proper  location  depends  on  your
       libc version)

CONFORMING TO
       POSIX.1.   System  V has a cuserid function which uses the
       real user ID  rather  than  the  effective  user  ID.  The
       cuserid  function  was  included  in  the  1988 version of
       POSIX, but removed from the 1990 version.

BUGS
       Unfortunately, it is often rather easy to fool getlogin().
       Sometimes  it  does  not work at all, because some program
       messed up the utmp file. Often, it gives only the first  8
       characters of the login name. The user currently logged in
       on the controlling tty of our program need not be the user
       who  started  it.   Avoid  getlogin() for security-related
       purposes.

       Nobody knows precisely what cuserid() does - avoid  it  in
       portable  programs  -  avoid  it  altogether  -  use getp-
       wuid(geteuid()) instead, if that is what  you  meant.   DO
       NOT USE cuserid().

SEE ALSO
       geteuid(2), getuid(2)

Linux 1.2.13            3 September, 1995                       1