Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getut(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ttyslot(3C)

utmp(4)

getut(3C)                                                         getut(3C)

NAME
     getut: getutent, getutid, getutline, pututline, setutent, endutent,
     utmpname - Auf utmp-Dateieintrag zugreifen

SYNTAX
     #include <utmp.h>

     struct utmp *getutent(void);

     struct utmp *getutid(const struct utmp *id);

     struct utmp *getutline(const struct utmp *line);

     struct utmp *pututline(const struct utmp *utmp);

     void setutent(void);

     void endutent(void);

     int utmpname(const char *file);

BESCHREIBUNG
     getutent(), getutid(), getutline() und pututline() geben jeweils einen
     Zeiger auf eine Struktur mit den folgenden Elementen zurück:

        char    utuser[8];    /* Login-Name des Benutzers */
        char    utid[4];      /* /sbin/inittab id (meist # der Zeile) */
        char    utline[12];   /* Gerätename (Konsole, lnxx) */
        short   utpid;        /* Prozeßnummer   */
        short   uttype;       /* Eintragstyp */
        struct  exitstatus {
        } utexit;             /* Exit-Status eines Prozesses, */
                               /* der als DEADPROCESS markiert ist. */
        timet  uttime;       /* Uhrzeit-Eintrag ist erfolgt */

     Die Struktur exitstatus umfaßt die folgenden Elemente:

        short   etermination;    /* Ende-Status */
        short   eexit;           /* Exit-Status */

     getutent() liest den nächsten Eintrag von einer utmp-ähnlichen Datei.
     Ist die Datei noch nicht geöffnet, wird sie von diesem Kommando geöff-
     net. Ist das Dateiende erreicht, ist getutent() erfolglos.

     getutid() sucht vom aktuellen Punkt vorwärts in der utmp-atei, bis es
     einen Eintrag mit einem uttype findet, der mit id->uttype überein-
     stimmt, wenn der angegebene Typ RUNLVL, BOOTTIME, OLDTIME oder
     NEWTIME ist. Wenn der in id angegebene Typ INITPROCESS, LOGINPROCESS,
     USERPROCESS oder DEADPROCESS ist, dann gibt getutid() einen Zeiger auf
     den ersten Eintrag zurück, dessen Typ einer dieser vier Typen ist und
     dessen utid-Feld id->utid entspricht. Wenn das Ende der Datei ohne
     passenden Eintrag erreicht wird, ist das Kommando erfolglos.



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

getut(3C)                                                         getut(3C)

     getutline() sucht vom aktuellen Punkt vorwärts in der utmp-Datei, bis
     es einen Eintrag des Typs LOGINPROCESS oder USERPROCESS findet, der
     außerdem auch eine Zeichenkette utline aufweist, die der Zeichenkette
     line->utline entspricht. Wenn das Ende der Datei erreicht ist, ohne
     daß ein entsprechender Eintrag gefunden wurde, ist das Kommando
     erfolglos.

     pututline() schreibt die angegebene utmp-Struktur in die utmp-Datei.
     Es sucht unter Verwendung von getutid() vorwärts nach der richtigen
     Stelle. Es wird erwartet, daß der Benutzer von pututline() bereits mit
     einer getut()-Routine nach dem richtigen Eintrag gesucht hat. In die-
     sem Fall führt pututline() keine Suche aus. Wenn pututline() keine
     entsprechende Stelle für den neuen Eintrag findet, hängt es diesen an
     das Ende der Datei. Es gibt einen Zeiger auf die Struktur utmp zurück.

     Wenn die gesamte Datei geprüft werden soll, muß vor der Suche nach einem
     Eintrag der Schreib-/Lesezeiger an den Anfang der Datei zurückgesetzt
     werden. Dieses Rücksetzen ist vor jeder Suche nach einem neuen Eintrag
     auszuführen, wenn eine Prüfung der gesamten Datei gewünscht ist.

     endutent() schließt die geöffnete Datei.

     utmpname() ermöglicht dem Benutzer, eine andere Datei als
     /var/adm/utmp zu durchsuchen. Üblicherweise handelt es sich dabei um
     die Datei /var/adm/wtmp. Wenn diese Datei nicht vorhanden ist, zeigt
     sich dies erst beim ersten Versuch, auf diese Datei zuzugreifen. utmp-
     name() eröffnet die Datei nicht. Es schließt lediglich die alte Datei,
     wenn sie gerade geöffnet ist, und sichert den neuen Dateinamen.

ERGEBNIS
     Ein Nullzeiger wird bei erfolglosem Lesen zurückgegeben, wobei es sich
     um fehlende Erlaubnis, Erreichen des Dateiendes oder erfolgloses
     Schreiben handeln kann.

HINWEISE
     Der aktuellste Eintrag wird in einer statischen Struktur gesichert.
     Soll auf eine Datei mehrfach zugegriffen werden, müssen die Einträge
     vor dem nächsten Zugriff kopiert werden. Bei jedem Aufruf von getu-
     tid() oder getutline() prüft die Funktion zunächst die statische
     Struktur, bevor sie weitere E/A ausführt. Wenn der Inhalt der stati-
     schen Struktur dem Inhalt der gesuchten Struktur entspricht, wird die
     Suche beendet. Aus diesem Grunde ist es für getutline() zum Suchen
     nach mehrfachem Auftreten erforderlich, die statische Struktur nach
     jedem Erfolg zu löschen, weil getutline() andernfalls immer nur die-
     selbe Struktur zurückgeben würde. Es gibt jedoch eine Ausnahme zu der
     Regel über das Löschen der Struktur vor dem Ausführen weiterer Lese-
     Operationen. Das implizierte Lesen, das von pututline() ausgeführt
     wird (wenn es feststellt, daß es sich nicht schon am richtigen Platz
     in der Datei befindet), beschädigt den Inhalt der von den Funktionen
     getutent(), getutid() oder getutline() zurückgegebenen statischen
     Struktur nicht, wenn der Benutzer diesen Inhalt gerade geändert und
     den Zeiger an pututline() zurückgegeben hat.


Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

getut(3C)                                                         getut(3C)

     Diese Funktionen verwenden gepufferte Standard-E/A für die Eingabe;
     pututline() jedoch schreibt ungepuffert, um Wettlaufbedingungen zwi-
     schen den Prozessen zu vermeiden, die versuchen, die Dateien utmp und
     wtmp zu ändern.

DATEIEN
     /var/adm/utmp

     /var/adm/wtmp

SIEHE AUCH
     ttyslot(3C), utmp(4).










































Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026