|
Standard C Library Functions | getlogin(3C) |
| getlogin, getlogin_r - get login name |
SYNOPSIS
|
#include <unistd.h> char *getlogin(void); |
| char *getlogin_r(char *name, int namelen); |
POSIX
|
|
cc [ flag ... ] file... -D_POSIX_PTHREAD_SEMANTICS [ library ... ] int getlogin_r(char *name, size_t namesize); |
|
|
The getlogin() function returns a pointer to the login name as found in /var/adm/utmpx. It may be used in conjunction with getpwnam(3C) to locate the correct password file entry when the same user ID is shared by several
login names.
If getlogin() is called within a process that is not attached to a terminal, it returns a null pointer. The correct procedure for determining the login name is to call cuserid(3C), or to call getlogin() and if it fails to call getpwuid(3C).
The getlogin_r() function has the same functionality as getlogin() except that the caller must supply a buffer name with length namelen to store the result. The name buffer must be at least _POSIX_LOGIN_NAME_MAX bytes in size (defined in <limits.h>). The POSIX version (see standards(5))
of getlogin_r() takes a namesize parameter of type size_t.
|
|
Upon successful completion, getlogin() returns a pointer to the login name or a null pointer if the user's login name cannot be found. Otherwise it returns a null pointer and sets errno to indicate the error.
The POSIX getlogin_r() returns 0 if successful, or the error number upon failure.
|
|
The getlogin() function may fail if:
-
EMFILE
- There are OPEN_MAX file descriptors 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 will fail if:
-
ERANGE
- The size of the buffer is smaller than the result to be returned.
-
EINVAL
- And entry for the current user was not found in the /var/adm/utmpx file.
|
|
The return value may point to static data whose content is overwritten by each call.
Three names associated with the current process can be determined: getpwuid(geteuid()) returns the name associated with the effective user ID of the process; getlogin() returns the name associated with the current login activity; and getpwuid(getuid()) returns the name associated
with the real user ID of the process.
|
|
-
/var/adm/utmpx
- user access and administration information
|
|
See attributes(5) for descriptions of the following
attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
MT-Level | See NOTES below. |
|
|
When compiling multithreaded programs, see Intro(3), Notes On Multithreaded Applications.
The getlogin() function is unsafe in multithreaded applications. The getlogin_r() function should be used instead.
Solaris 2.4 and earlier releases provided a getlogin_r() as specified in POSIX.1c Draft 6. The final POSIX.1c standard changed the interface as described above. Support for the
Draft 6 interface is provided for compatibility only and may not be supported in future releases. New applications and libraries should use the POSIX standard interface.
|
| |