mirror of https://github.com/mkerrisk/man-pages
169 lines
3.8 KiB
Groff
169 lines
3.8 KiB
Groff
.\" Derived from text written by Martin Schulze (or taken from glibc.info)
|
|
.\" and text written by Paul Thompson - both copyright 2002.
|
|
.\"
|
|
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
|
|
.\" This is free documentation; you can redistribute it and/or
|
|
.\" modify it under the terms of the GNU General Public License as
|
|
.\" published by the Free Software Foundation; either version 2 of
|
|
.\" the License, or (at your option) any later version.
|
|
.\"
|
|
.\" The GNU General Public License's references to "object code"
|
|
.\" and "executables" are to be interpreted as the output of any
|
|
.\" document formatting or typesetting system, including
|
|
.\" intermediate and printed output.
|
|
.\"
|
|
.\" This manual is distributed in the hope that it will be useful,
|
|
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
.\" GNU General Public License for more details.
|
|
.\"
|
|
.\" You should have received a copy of the GNU General Public
|
|
.\" License along with this manual; if not, see
|
|
.\" <http://www.gnu.org/licenses/>.
|
|
.\" %%%LICENSE_END
|
|
.\"
|
|
.TH LOGIN 3 2017-09-15 "GNU" "Linux Programmer's Manual"
|
|
.SH NAME
|
|
login, logout \- write utmp and wtmp entries
|
|
.SH SYNOPSIS
|
|
.nf
|
|
.B #include <utmp.h>
|
|
.PP
|
|
.BI "void login(const struct utmp *" ut );
|
|
.BI "int logout(const char *" ut_line );
|
|
.fi
|
|
.PP
|
|
Link with \fI\-lutil\fP.
|
|
.SH DESCRIPTION
|
|
The utmp file records who is currently using the system.
|
|
The wtmp file records all logins and logouts.
|
|
See
|
|
.BR utmp (5).
|
|
.PP
|
|
The function
|
|
.BR login ()
|
|
takes the supplied
|
|
.IR "struct utmp" ,
|
|
.IR ut ,
|
|
and writes it to both the utmp and the wtmp file.
|
|
.PP
|
|
The function
|
|
.BR logout ()
|
|
clears the entry in the utmp file again.
|
|
.SS GNU details
|
|
More precisely,
|
|
.BR login ()
|
|
takes the argument
|
|
.I ut
|
|
struct, fills the field
|
|
.I ut\->ut_type
|
|
(if there is such a field) with the value
|
|
.BR USER_PROCESS ,
|
|
and fills the field
|
|
.I ut\->ut_pid
|
|
(if there is such a field) with the process ID of the calling process.
|
|
Then it tries to fill the field
|
|
.IR ut\->ut_line .
|
|
It takes the first of
|
|
.IR stdin ,
|
|
.IR stdout ,
|
|
.I stderr
|
|
that is a terminal, and
|
|
stores the corresponding pathname minus a possible leading
|
|
.I /dev/
|
|
into this field, and then writes the struct to the utmp file.
|
|
On the other hand,
|
|
if no terminal name was found, this field is filled with "???"
|
|
and the struct is not written to the utmp file.
|
|
After this, the struct is written to the wtmp file.
|
|
.PP
|
|
The
|
|
.BR logout ()
|
|
function searches the utmp file for an entry matching the
|
|
.I ut_line
|
|
argument.
|
|
If a record is found, it is updated by zeroing out the
|
|
.I ut_name
|
|
and
|
|
.I ut_host
|
|
fields, updating the
|
|
.I ut_tv
|
|
timestamp field and setting
|
|
.I ut_type
|
|
(if there is such a field) to
|
|
.BR DEAD_PROCESS .
|
|
.SH RETURN VALUE
|
|
The
|
|
.BR logout ()
|
|
function returns 1 if the entry was successfully written to the
|
|
database, or 0 if an error occurred.
|
|
.SH FILES
|
|
.TP
|
|
.I /var/run/utmp
|
|
user accounting database, configured through
|
|
.B _PATH_UTMP
|
|
in
|
|
.I <paths.h>
|
|
.TP
|
|
.I /var/log/wtmp
|
|
user accounting log file, configured through
|
|
.B _PATH_WTMP
|
|
in
|
|
.I <paths.h>
|
|
.SH ATTRIBUTES
|
|
For an explanation of the terms used in this section, see
|
|
.BR attributes (7).
|
|
.TS
|
|
allbox;
|
|
lb lb lbw20
|
|
l l l.
|
|
Interface Attribute Value
|
|
T{
|
|
.BR login (),
|
|
.br
|
|
.BR logout ()
|
|
T} Thread safety T{
|
|
MT-Unsafe race:utent
|
|
.br
|
|
sig:ALRM timer
|
|
T}
|
|
.TE
|
|
.sp 1
|
|
In the above table,
|
|
.I utent
|
|
in
|
|
.I race:utent
|
|
signifies that if any of the functions
|
|
.BR setutent (3),
|
|
.BR getutent (3),
|
|
or
|
|
.BR endutent (3)
|
|
are used in parallel in different threads of a program,
|
|
then data races could occur.
|
|
.BR login ()
|
|
and
|
|
.BR logout ()
|
|
calls those functions,
|
|
so we use race:utent to remind users.
|
|
.SH CONFORMING TO
|
|
Not in POSIX.1.
|
|
Present on the BSDs.
|
|
.SH NOTES
|
|
Note that the
|
|
member
|
|
.I ut_user
|
|
of
|
|
.I struct utmp
|
|
is called
|
|
.I ut_name
|
|
in BSD.
|
|
Therefore,
|
|
.I ut_name
|
|
is defined as an alias for
|
|
.I ut_user
|
|
in
|
|
.IR <utmp.h> .
|
|
.SH SEE ALSO
|
|
.BR getutent (3),
|
|
.BR utmp (5)
|