|HP-UX Reference > G
getlogin(3C)HP-UX 11i Version 3: February 2007
getlogin(), getlogin_r() — get name of user logged in on this terminal
The getlogin() function retrieves the name of the user currently logged in on a terminal associated with the calling process, as found in user-accounting database maintained by utmpd(1M).
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 process's 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 can be obtained using the sysconf() API with _SC_LOGIN_NAME_MAX as the argument.
The return value from getlogin() points to static data whose content is overwritten by each call.
Upon successfully finding and validating the login name of the user logged in on the terminal, getlogin() 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.
getlogin() and getlogin_r() fail if any of the following is true:
The error condition associated with [EPERM] prevents processes that have access to some other user's terminal from believing that they are related to that other user's login session.
getlogin_r() also fails if the following is true:
Users of getlogin_r() should note getlogin_r() now conforms with the POSIX.1c Threads standard. The old prototype of getlogin_r() is supported for compatibility with existing DCE applications only.
utmpd(1M), getuid(2), sysconf(2), getgrent(3C), getpwent(3C), thread_safety(5).