getlogin(3C)getlogin(3C)NAMEgetlogin(), getlogin_r() - get name of user logged in on this terminal
The function retrieves the name of the user currently logged in on a
terminal associated with the calling process, as found in user-account‐
ing 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
The function can be used in conjunction with to locate the correct
password file entry when the same user ID is shared by several login
The recommended procedure to obtain the user name associated with the
real user ID of the calling process is to call and if that fails, to
To get the user name associated with the effective user ID, call
performs the same operations as but returns the login name in the buf‐
fer 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 API with as the argument.
The return value from points to static data whose content is overwrit‐
ten by each call.
Upon successfully finding and validating the login name of the user
logged in on the terminal, returns a pointer to the name. Otherwise,
it returns a null pointer, and sets to indicate the error.
Upon successfully finding, validating, and copying to the buffer the
login name of the user logged in on the terminal, returns 0 upon suc‐
cess and returns an error number upon failure.
and fail if any of the following is true:
[EACCES] Access permission to get the status of the termi‐
nal device file, was denied.
[EMFILE] Too many file descriptors are in use by this
[ENFILE] Too many file descriptors are in use on the sys‐
[ENOENT] 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 con‐
[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 terminal from believing that they are
related to that other user's login session.
also fails if the following is true:
[ERANGE] The length of the name to be returned, including
the terminating null byte, exceeds buflen.
Users of should note now conforms with the POSIX.1c Threads standard.
The old prototype of is supported for compatibility with existing DCE
SEE ALSOutmpd(1M), getuid(2), sysconf(2), getgrent(3C), getpwent(3C),