HP-UX Reference (11i v1 00/12) - 3 Library Functions A-M (vol 6)

__________________________________________________________________________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________________________________________________________________________
STANDARD Printed by: Nora Chuang [nchuang] STANDARD
/build/1111/BRICK/man3/!!!intro.3c
________________________________________________________________
___ ___
g
getlogin(3C) getlogin(3C)
NAME
getlogin(), getlogin_r() - get name of user logged in on this terminal
SYNOPSIS
#include <unistd.h>
char *getlogin(void);
int getlogin_r(char *buf, size_t buflen);
DESCRIPTION
The getlogin() function retrieves the name of the user currently logged in on a terminal associated
with the calling process, as found in /etc/utmp.
At least one of the standard input, standard output, or standard error must be a terminal. For the first of
these found that is a terminal, a user must have logged in on that terminal, and that terminal must be the
controlling terminal of the session leader process of the calling processs session.
The getlogin() function can be used in conjunction with getpwnam() to locate the correct password
file entry when the same user ID is shared by several login names.
The recommended procedure to obtain the user name associated with the real user ID of the calling process
is to call getlogin(), and if that fails, to call getpwuid(getuid())
.
To get the user name associated with the effective user ID, call
getpwuid(geteuid())
.
getlogin_r() performs the same operations as getlogin() , but returns the login name in the buffer
to which buf points, whose size in bytes should be passed in buflen. buf should have space for the name and
the terminating null character. The maximum size of the login name is
LOGIN_NAME_MAX
.
APPLICATION USAGE
The return value from
getlogin() points to static data whose content is overwritten by each call.
getlogin_r() is thread-safe. getlogin_r() is not async-cancel-safe. A cancellation point may occur
when a thread is executing getlogin() or getlogin_r() .
RETURN VALUE
Upon successfully finding and validating the login name of the user logged in on the terminal, getlo-
gin()
returns a pointer to the name. Otherwise, it returns a null pointer, and sets errno to indicate the
error.
Upon successfully finding, validating, and copying to the buffer the login name of the user logged in on the
terminal,
getlogin_r() returns 0 upon success and returns an error number upon failure.
ERRORS
getlogin() and getlogin_r() fail if any of the following is true:
[EACCES] Access permission to read the /etc/utmp file, or to get the status of the terminal
device file, was denied.
[EMFILE] Too many file descriptors are in use by this process.
[ENFILE] Too many file descriptors are in use on the system.
[ENOENT] The /etc/utmp file or the terminal device file cannot be found.
[ENOTTY] None of the standard input, standard output, or standard error is a terminal, or for
the first of these that is a terminal, no current login is registered on that terminal, or
the session leader process of the calling process has no controlling terminal.
[EPERM] One of the standard input, standard output, or standard error is a terminal, and a
current login was found on that terminal, but that terminal is not the same as the
controlling terminal of the session of the calling process.
[ESRCH] The session leader process of the calling process is no longer running.
The error condition associated with [EPERM] prevents processes that have access to some other user’s ter-
minal from believing that they are related to that other user’s login session.
getlogin_r() also fails if the following is true:
HP-UX Release 11i: December 2000 1 Section 3307
___
___