GETLOGIN(2) | System Calls Manual | GETLOGIN(2) |
getlogin
, setlogin
— get/set login name
#include
<unistd.h>
char *
getlogin
(void);
int
setlogin
(const char *name);
The
getlogin
()
routine returns the login name of the user associated with the current
session, as previously set by setlogin
(). The name
is normally associated with a login shell at the time a session is created,
and is inherited by all processes descended from the login shell. (This is
true even if some of those processes assume another user ID, for example
when su(1) is used.)
setlogin
()
sets the login name of the user associated with the current session to
name. This call is restricted to the super-user, and
is normally used only when a new session is being created on behalf of the
named user (for example, at login time, or when a remote shell is
invoked).
If a call to getlogin
() succeeds, it
returns a pointer to a null-terminated string in a static buffer. If the
name has not been set, it returns NULL
. If a call to
setlogin
() succeeds, a value of 0 is returned. If
setlogin
() fails, a value of -1 is returned and an
error code is placed in the global location errno.
The following errors may be returned by these calls:
Login names are limited in length by
setlogin
(). However, lower limits are placed on
login names elsewhere in the system (UT_NAMESIZE
in
⟨utmp.h⟩).
In earlier versions of the system,
getlogin
() failed unless the process was associated
with a login terminal. The current implementation (using
setlogin
()) allows getlogin to succeed even when the
process has no controlling terminal. In earlier versions of the system, the
value returned by getlogin
() could not be trusted
without checking the user ID. Portable programs should probably still make
this check.
The getlogin
() function first appeared in
4.4BSD.
June 9, 1993 | BSD 4.2 |