.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1995 Mark D. Roth (roth@uiuc.edu) .\" .\" SPDX-License-Identifier: GPL-2.0-or-later .\" .\" References consulted: .\" Linux libc source code .\" Solaris manpages .\" .\" Modified Thu Jul 25 14:43:46 MET DST 1996 by Michael Haardt .\" .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getutent 3 "20. Juli 2023" "Linux man\-pages 6.05.01" .SH BEZEICHNUNG getutent, getutid, getutline, pututline, setutent, endutent, utmpname \- auf Einträge der utmp\-Datei zugreifen .SH BIBLIOTHEK Standard\-C\-Bibliothek (\fIlibc\fP, \fI\-lc\fP) .SH ÜBERSICHT .nf \fB#include \fP .PP \fBstruct utmp *getutent(void);\fP \fBstruct utmp *getutid(const struct utmp *\fP\fIut\fP\fB);\fP \fBstruct utmp *getutline(const struct utmp *\fP\fIut\fP\fB);\fP .PP \fBstruct utmp *pututline(const struct utmp *\fP\fIut\fP\fB);\fP .PP \fBvoid setutent(void);\fP \fBvoid endutent(void);\fP .PP \fBint utmpname(const char *\fP\fIDatei\fP\fB);\fP .fi .SH BESCHREIBUNG Neue Applikationen sollten die in POSIX.1 spezifizierten »utmpx«\-Versionen dieser Funktionen verwenden, siehe STANDARDS. .PP \fButmpname\fP() setzt den Namen der Datei im utmp\-Format, auf die die anderen utmp\-Funktionen zugreifen. Wenn \fButmpname\fP() nicht benutzt wird, um den Dateinamen zu setzen bevor die anderen Funktionen benutzt werden, wird von diesen \fB_PATH_UTMP\fP angenommen, wie in \fI\fP definiert. .PP \fBsetutent\fP() setzt den Dateizeiger auf den Anfang der Datei utmp zurück. Im Allgemeinen ist es sinnvoll, dies vor Verwendung der anderen Funktionen aufzurufen. .PP \fBendutent\fP() schließt die Datei utmp. Sie sollte aufgerufen werden, wenn die Verwendung der anderen Funktionen im Benutzercode beendet ist. .PP \fBgetutent\fP() liest eine Zeile ab der aktuellen Dateiposition in der Datei utmp. Es wird ein Zeiger auf eine Struktur zurückgegeben, welche die Felder der Zeile enthält. Die Definition dieser Struktur ist in \fButmp\fP(5) aufgeschlüsselt. .PP \fBgetutid\fP() sucht ab der aktuellen Dateiposition in der Datei utmp vorwärts, basierend auf \fIut\fP. Wenn \fIut\->ut_type\fP gleich \fBRUN_LVL\fP, \fBBOOT_TIME\fP, \fBNEW_TIME\fP oder \fBOLD_TIME\fP ist, findet \fBgetutid\fP() den ersten Eintrag, dessen Feld \fIut_type\fP \fIut\->ut_type\fP entspricht. Wenn \fIut\->ut_type\fP gleich \fBINIT_PROCESS\fP, \fBLOGIN_PROCESS\fP, \fBUSER_PROCESS\fP oder \fBDEAD_PROCESS\fP ist, findet \fBgetutid\fP() den ersten Eintrag, dessen Feld \fIut_id\fP \fIut\->ut_id\fP entspricht. .PP \fBgetutline\fP() sucht ab der aktuellen Dateiposition in der Datei utmp vorwärts. Die Funktion überprüft Einträge, deren Feld \fIut_type\fP gleich \fBUSER_PROCESS\fP oder \fBLOGIN_PROCESS\fP ist und gibt den ersten Eintrag zurück, dessen Feld \fIut_line\fP \fIut\->ut_line\fP entspricht. .PP \fBpututline\fP() schreibt die utmp\-Struktur \fIut\fP in die Datei utmp. Die Funktion benutzt \fBgetutid\fP(), um den geeigneten Platz in der Datei für das Einfügen des neuen Eintrags zu finden. Wenn kein geeigneter Platz für \fIut\fP gefunden werden kann, hängt \fBpututline\fP() den neuen Eintrag am Ende der Datei an. .SH RÜCKGABEWERT \fBgetutent\fP(), \fBgetutid\fP() und \fBgetutline\fP() liefern bei Erfolg einen Zeiger auf eine \fIstruct utmp\fP\-Struktur zurück und NULL bei Fehlern (dies schließt den Fall ein, dass ein Eintrag nicht gefunden wird, »record not found«). Die Struktur \fIstruct utmp\fP wird als statischer Speicher alloziert und kann von nachfolgenden Aufrufen überschrieben werden. .PP Bei Erfolg gibt \fBpututline\fP() \fIut\fP zurück; bei Fehlern gibt die Funktion NULL zurück. .PP Wenn der Name erfolgreich gespeichert wurde, gibt \fButmpname\fP() 0 zurück, bei Fehlern \-1. .PP Im Fehlerfall setzen diese Funktionen \fIerrno\fP, um den Fehler anzuzeigen. .SH FEHLER .TP \fBENOMEM\fP Speicher aufgebraucht. .TP \fBESRCH\fP Eintrag nicht gefunden. .PP \fBsetutent\fP(), \fBpututline\fP() und die \fBgetut*\fP()\-Funktionen können aus den gleichen Gründen fehlschlagen wie in \fBopen\fP(2) beschrieben. .SH DATEIEN .TP \fI/var/run/utmp\fP Datenbank aktuell angemeldeter Benutzer .TP \fI/var/log/wtmp\fP Datenbank früherer Benutzeranmeldungen .SH ATTRIBUTE Siehe \fBattributes\fP(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke. .TS allbox; lb lb lbx l l l. Schnittstelle Attribut Wert T{ .na .nh \fBgetutent\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Unsicher init race:utent race:utentbuf sig:ALRM timer T} T{ .na .nh \fBgetutid\fP(), \fBgetutline\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Unsicher init race:utent sig:ALRM timer T} T{ .na .nh \fBpututline\fP() T} Multithread\-Fähigkeit T{ .na .nh MT\-Unsicher race:utent sig:ALRM timer T} T{ .na .nh \fBsetutent\fP(), \fBendutent\fP(), \fButmpname\fP() T} Multithread\-Fähigkeit MT\-Unsicher race:utent .TE .sp 1 In der obigen Tabelle bedeutet \fIutent\fP in \fIrace:utent\fP, dass, falls eine der Funktionen \fBsetutent\fP(), \fBgetutent\fP(), \fBgetutid\fP(), \fBgetutline\fP(), \fBpututline\fP(), \fButmpname\fP() oder \fBendutent\fP() in verschiedenen Threads eines Programms parallel verwandt werden, konkurrierende Zugriffe auf Daten (»data races«) auftreten könnten. .SH STANDARDS Keine. .SH GESCHICHTE XPG2, SVr4. .PP In XPG2 und SVID 2 ist dokumentiert, dass die Funktion \fBpututline\fP() \fIvoid\fP zurückgibt und das tut sie auch auf vielen Systemen (AIX, HP\-UX). HP\-UX führt eine neue Funktion \fB_pututline\fP() mit dem oben angegebenen Prototyp für \fBpututline\fP() ein. .PP Alle diese Funktionen sind jetzt auf Nicht\-Linux\-Systemen überholt. POSIX.1\-2001 und POSIX.1\-2008 folgt SUSv1 und erwähnt keine dieser Funktionen, sondern nutzt .PP .RS 4 .EX \fB#include \fP .PP \fBstruct utmpx *getutxent(void);\fP \fBstruct utmpx *getutxid(const struct utmpx *);\fP \fBstruct utmpx *getutxline(const struct utmpx *);\fP \fBstruct utmpx *pututxline(const struct utmpx *);\fP \fBvoid setutxent(void);\fP \fBvoid endutxent(void);\fP .EE .RE .PP Diese Funktionen werden von der Glibc bereitgestellt und erledigen die gleiche Aufgabe wie ihre Äquivalente ohne das »x«, aber verwenden \fIstruct utmpx\fP, welche unter Linux als das Gleiche wie \fIstruct utmp\fP definiert ist. Der Vollständigkeit wegen stellt Glibc auch \fButmpxname\fP() bereit, obwohl diese Funktion nicht von POSIX.1 beschrieben wird. .PP Auf manchen anderen Systemen ist die \fIutmpx\fP\-Struktur eine Obermenge der \fIutmp\fP\-Struktur mit zusätzlichen Feldern und größeren Versionen der vorhandenen Felder. Zudem werden auch parallele Dateien unterstützt, oft \fI/var/*/utmpx\fP und \fI/var/*/wtmpx\fP. .PP Die Linux\-Glibc auf der anderen Seite verwendet keine parallele \fIutmpx\fP\-Datei, weil ihre \fIutmp\fP\-Struktur schon groß genug ist. Die oben aufgeführten »x«\-Funktionen sind nur Aliase für ihre Gegenstücke ohne »x« (z.\ B. ist \fBgetutxent\fP() ein Alias für \fBgetutent\fP()). .SH ANMERKUNGEN .SS "Anmerkungen zur Glibc" Die oben erwähnten Funktionen sind nicht multithread\-fähig. Glibc fügt ablaufinvariante Versionen hinzu. .PP .nf \fB#include \fP .PP \fBint getutent_r(struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP \fBint getutid_r(struct utmp *\fP\fIut\fP\fB,\fP \fB struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP \fBint getutline_r(struct utmp *\fP\fIut\fP\fB,\fP \fB struct utmp *\fP\fIubuf\fP\fB, struct utmp **\fP\fIubufp\fP\fB);\fP .fi .PP Mit Glibc erforderliche Feature\-Test\-Makros (siehe \fBfeature_test_macros\fP(7)): .PP \fBgetutent_r\fP(), \fBgetutid_r\fP(), \fBgetutline_r\fP(): .nf _GNU_SOURCE || /* Seit Glibc 2.19: */ _DEFAULT_SOURCE || /* Glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE .fi .PP Diese Funktionen sind GNU\-Erweiterungen, Gegenstücke der Funktionen gleichen Namens ohne den Suffix _r. Das Argument \fIubuf\fP gibt diesen Funktionen einen Ort für die Speicherung ihrer Ergebnisse. Bei Erfolg geben Sie 0 zurück und schreiben einen Zeiger auf das Ergebnis in \fI* ubufp\fP. Tritt ein Fehler auf, geben diese Funktionen \-1 zurück. Es gibt keine utmpx\-Äquivalente dieser Funktionen. (POSIX.1 beschreibt diese Funktionen nicht.) .SH BEISPIELE Das folgende Beispiel erstellt und entfernt einen umtp\-Datensatz. Es wird angenommen, dass es in einem Pseudo\-Terminal läuft. Zur Verwendung in einer realen Anwendung sollten Sie die Rückgabewerte von \fBgetpwuid\fP(3) und \fBttyname\fP(3) prüfen. .PP .\" SRC BEGIN (getutent.c) .EX #include #include #include #include #include #include \& int main(void) { struct utmp entry; \& system("echo Vor dem Hinzufügen des Eintrags:;who"); \& entry.ut_type = USER_PROCESS; entry.ut_pid = getpid(); strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/")); /* stimmt nur für ptys namens /dev/tty[pqr][0\-9a\-z] */ strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty")); time(&entry.ut_time); strcpy(entry.ut_user, getpwuid(getuid())\->pw_name); memset(entry.ut_host, 0, UT_HOSTSIZE); entry.ut_addr = 0; setutent(); pututline(&entry); \& system("echo Nach dem Hinzufügen des Eintrags:;who"); \& entry.ut_type = DEAD_PROCESS; memset(entry.ut_line, 0, UT_LINESIZE); entry.ut_time = 0; memset(entry.ut_user, 0, UT_NAMESIZE); setutent(); pututline(&entry); \& system("echo Nach dem Entfernen des Eintrags:;who"); \& endutent(); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "SIEHE AUCH" \fBgetutmp\fP(3), \fButmp\fP(5) .PP .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer , Mario Blättermann , Dr. Tobias Quathamer und Helge Kreutzmann erstellt. .PP Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. .PP Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@lists.debian.org Mailingliste der Übersetzer .ME .