Identifying Who Logged In
=========================
You can use the functions listed in this section to determine the
login name of the user who is running a process, and the name of the
user who logged in the current session. See also the function `getuid'
and friends (Note:Reading Persona). How this information is
collected by the system and how to control/add/remove information from
the background storage is described in Note:User Accounting Database.
The `getlogin' function is declared in `unistd.h', while `cuserid'
and `L_cuserid' are declared in `stdio.h'.
- Function: char * getlogin (void)
The `getlogin' function returns a pointer to a string containing
the name of the user logged in on the controlling terminal of the
process, or a null pointer if this information cannot be
determined. The string is statically allocated and might be
overwritten on subsequent calls to this function or to `cuserid'.
- Function: char * cuserid (char *STRING)
The `cuserid' function returns a pointer to a string containing a
user name associated with the effective ID of the process. If
STRING is not a null pointer, it should be an array that can hold
at least `L_cuserid' characters; the string is returned in this
array. Otherwise, a pointer to a string in a static area is
returned. This string is statically allocated and might be
overwritten on subsequent calls to this function or to `getlogin'.
The use of this function is deprecated since it is marked to be
withdrawn in XPG4.2 and has already been removed from newer
revisions of POSIX.1.
- Macro: int L_cuserid
An integer constant that indicates how long an array you might
need to store a user name.
These functions let your program identify positively the user who is
running or the user who logged in this session. (These can differ when
setuid programs are involved; see Note:Process Persona.) The user
cannot do anything to fool these functions.
For most purposes, it is more useful to use the environment variable
`LOGNAME' to find out who the user is. This is more flexible precisely
because the user can set `LOGNAME' arbitrarily. Note:Standard
Environment.