#include <unistd.h>char *getlogin(void);
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:
There are OPEN_MAX file descriptors currently open in the calling process.
The maximum allowable number of files is currently open in the system.
The calling process has no controlling terminal.
The getlogin_r() function will fail if:
The size of the buffer is smaller than the result to be returned.
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.
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.