getlogin Subroutine
Purpose
Gets a user's login name.
Library
Standard C Library (libc.a)
Syntax
include <sys/types.h>
include <unistd.h>
include <limits.h>
char *getlogin (void)
Description
The getlogin subroutine returns a pointer to the login name in the /etc/utmp file. You can use the getlogin subroutine with the getpwnam (getpwent, getpwuid, getpwnam, putpwent, setpwent, or endpwent Subroutine) subroutine to locate the correct password file entry when the same user ID is shared by several login names.
If the getlogin subroutine cannot find the login name in the /etc/utmp file, it returns the process LOGNAME environment variable. If the getlogin subroutine is called within a process that is not attached to a terminal, it returns the value of the LOGNAME environment variable. If the LOGNAME environment variable does not exist, a null pointer is returned.
In UNIX03 mode, if the login name cannot be found in the /etc/utmp file or if there is no controlling terminal for the process, the getlogin subroutine does not return the LOGNAME environment variable, it returns a null pointer and sets the error code ENXIO. This behavior is enabled by setting the environment variable XPG_SUS_ENV=ON (which enables all UNIX03 functionality) or by setting the variable XPG_GETLOGIN=ON (which just enables UNIX03 mode for the getlogin and getlogin_r subroutines).
Return Values
The return value can point to static data whose content is overwritten by each call. If the login name is not found, the getlogin subroutine returns a null pointer.
Error Codes
If the getlogin function is unsuccessful, it returns one or more of the following error codes:
Item | Description |
---|---|
EMFILE | Indicates that the OPEN_MAX file descriptors are currently open in the calling process. |
ENFILE | Indicates that the maximum allowable number of files is currently open in the system. |
ENXIO | Indicates that the calling process has no controlling terminal. |
Files
Item | Description |
---|---|
/etc/utmp | Contains a record of users logged into the system. |