GETLOGIN(2)                      System Calls                      GETLOGIN(2)




NAME

       getlogin, setlogin - get/set login name


SYNOPSIS

       #include <unistd.h>

       char *getlogin (void);

       int setlogin (const char *name);


DESCRIPTION

       The getlogin routine returns the login name of the user associated with
       the current session, as previously set by setlogin.  The name  is  nor‐
       mally  associated  with a login shell at the time a session is created,
       and is inherited by all  processes  descended  from  the  login  shell.
       (This  is  true even if some of those processes assume another user ID,
       for example when su(1) is used.)

       Setlogin sets the login name of the user associated  with  the  current
       session  to  name.   This  call is restricted to the super-user, and is
       normally used only when a new session is being created on behalf of the
       named  user  (for example, at login time, or when a remote shell is in‐
       voked).


RETURN VALUES

       If a call to getlogin succeeds, it returns a pointer to  a  null-termi‐
       nated  string in a static buffer.  If the name has not been set, it re‐
       turns NULL.  If a call to setlogin succeeds, a value of 0 is  returned.
       If  setlogin  fails,  a  value  of  -1 is returned and an error code is
       placed in the global location errno.


ERRORS

       The following errors may be returned by these calls:

              EFAULT The name parameter gave an invalid address.

              EINVAL The name parameter pointed to a string that was too long.
                     Login    names    are   limited   to   MAXLOGNAME   (from
                     <sys/param.h>) characters, currently 12.

              EPERM  The caller tried to set the login name and  was  not  the
                     super-user.


SEE ALSO

       setsid(2)


BUGS

       Login  names  are limited in length by setlogin.  However, lower limits
       are placed on login names  elsewhere  in  the  system  (UT_NAMESIZE  in
       <utmp.h>).

       In  earlier  versions of the system, getlogin failed unless the process
       was associated with a login terminal.  The current implementation  (us‐
       ing  setlogin)  allows getlogin to succeed even when the process has no
       controlling terminal.  In earlier versions of the system, the value re‐
       turned  by  getlogin could not be trusted without checking the user ID.
       Portable programs should probably still make this check.


HISTORY

       The getlogin function first appeared in 4.4BSD.



GNO                            17 September 1997                   GETLOGIN(2)

Man(1) output converted with man2html