getlogin - Online Manual Page Of Unix/Linux

  Command: man perldoc info search(apropos)

WebSearch:
Our Recommended Sites:
  • Printer Ink
Full-Featured Editor
 

GETLOGIN(P)                                                                           GETLOGIN(P)



NAME
       getlogin, getlogin_r - get login name

SYNOPSIS
       #include 

       char *getlogin(void);


       int getlogin_r(char *name, size_t namesize);


DESCRIPTION
       The  getlogin() function shall return a pointer to a string containing the user name asso-
       ciated by the login activity with the controlling terminal of the current process. If get-
       login()  returns  a  non-null  pointer, then that pointer points to the name that the user
       logged in under, even if there are several login names with the same user ID.

       The getlogin() function need not be reentrant. A function that is not required to be reen-
       trant is not required to be thread-safe.

       The  getlogin_r()  function  shall  put the name associated by the login activity with the
       controlling terminal of the current process in the character array pointed to by name. The
       array  is  namesize characters long and should have space for the name and the terminating
       null character. The maximum size of the login name is {LOGIN_NAME_MAX}.

       If getlogin_r() is successful, name points to the name the user used  at  login,  even  if
       there are several login names with the same user ID.

RETURN VALUE
       Upon  successful completion, getlogin() shall return a pointer to the login name or a null
       pointer if the user's login name cannot be  found.  Otherwise,  it  shall  return  a  null
       pointer and set errno to indicate the error.

       The  return value from getlogin() may point to static data whose content is overwritten by
       each call.

       If successful, the getlogin_r() function shall return zero;  otherwise,  an  error  number
       shall be returned to indicate the error.

ERRORS
       The getlogin() and getlogin_r() functions may fail if:

       EMFILE {OPEN_MAX} file descriptors are currently open in the calling process.

       ENFILE The maximum allowable number of files is currently open in the system.

       ENXIO  The calling process has no controlling terminal.


       The getlogin_r() function may fail if:

       ERANGE The  value  of  namesize  is  smaller  than the length of the string to be returned
              including the terminating null character.


       The following sections are informative.

EXAMPLES
   Getting the User Login Name
       The following example calls the getlogin() function to obtain the name of the user associ-
       ated  with  the calling process, and passes this information to the getpwnam() function to
       get the associated user database information.


              #include 
              #include 
              #include 
              #include 
              ...
              char *lgn;
              struct passwd *pw;
              ...
              if ((lgn = getlogin()) == NULL || (pw = getpwnam(lgn)) == NULL) {
                  fprintf(stderr, "Get of user information failed.\n"); exit(1);
                  }

APPLICATION USAGE
       Three names associated with the current process can be  determined:  getpwuid(  geteuid())
       shall  return  the  name  associated with the effective user ID of the process; getlogin()
       shall return the name associated with the current login activity; and getpwuid(  getuid())
       shall return the name associated with the real user ID of the process.

       The  getlogin_r()  function  is  thread-safe  and returns values in a user-supplied buffer
       instead of possibly using a static data area that may be overwritten by each call.

RATIONALE
       The getlogin() function returns a pointer to the user's login name. The same user  ID  may
       be  shared by several login names. If it is desired to get the user database entry that is
       used during login, the result of getlogin() should be used to provide the argument to  the
       getpwnam() function. (This might be used to determine the user's login shell, particularly
       where a single user has multiple login shells with distinct login names, but the same user
       ID.)

       The  information  provided  by the cuserid() function, which was originally defined in the
       POSIX.1-1988 standard and subsequently removed, can be obtained by the following:


              getpwuid(geteuid())

       while the information provided by historical implementations of cuserid() can be  obtained
       by:


              getpwuid(getuid())

       The  thread-safe  version  of this function places the user name in a user-supplied buffer
       and returns a non-zero value if it fails. The non-thread-safe version may return the  name
       in a static data area that may be overwritten by each call.

FUTURE DIRECTIONS
       None.

SEE ALSO
       getpwnam()  ,  getpwuid()  ,  geteuid()  ,  getuid()  ,  the  Base  Definitions  volume of
       IEEE Std 1003.1-2001, , 

COPYRIGHT
       Portions of this text are reprinted and  reproduced  in  electronic  form  from  IEEE  Std
       1003.1,  2003  Edition,  Standard  for Information Technology -- Portable Operating System
       Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003  by
       the  Institute  of  Electrical  and  Electronics Engineers, Inc and The Open Group. In the
       event of any discrepancy between this version and the original IEEE  and  The  Open  Group
       Standard, the original IEEE and The Open Group Standard is the referee document. The orig-
       inal Standard can be obtained online at http://www.opengroup.org/unix/online.html .



POSIX                                          2003                                   GETLOGIN(P)