Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ getutx(3C) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ttyslot(3C)

utmp(4)

utmpx(4)

getutx(3C)                                                       getutx(3C)

NAME
     getutx: getutxent, getutxid, getutxline, pututxline, setutxent,
     endutxent, utmpxname, getutmp, getutmpx, updwtmp, updwtmpx - Auf
     utmpx-Eintrag zugreifen

SYNTAX
     #include <utmpx.h>

     struct utmpx *getutxent(void);

     struct utmpx *getutxid(const struct utmpx *id);

     struct utmpx *getutxline(const struct utmpx *line);

     struct utmpx *pututxline(const struct utmpx *utmpx);

     void setutxent(void);

     void endutxent(void);

     int utmpxname(const char *file);

     void getutmp(struct utmpx *utmpx, struct utmp *utmp);

     void getutmpx(struct utmp *utmp, struct utmpx *utmpx);

     void updwtmp(char *wfile, struct utmp *utmp);

     void updwtmpx(char *wfilex, struct utmpx *utmpx);

BESCHREIBUNG
     getutxent(), getutxid() und getutxline() liefern einen Zeiger auf eine
     Struktur des folgenden Typs:

     struct     utmpx {
          char     utuser[32]; /* Anmeldenamen des Benutzers */
          char     utid[4];   /* /sbin/inittab id (normalerweise
                                   Zeilennummer) */
          char     utline[32];  /* Geraetename (Konsole, lnxx) */
          pidt    utpid;       /* Prozess-ID */
          short    uttype;      /* Art des Eintrags */
          struct     exitstatus {
              short     etermination; /* Endestatus */
              short     eexit;        /* Exit-Status */
          } utexit;   /* Exit-Status eines Prozesses markiert als
                          DEADPROCESS */
          struct timeval     uttv;     /* Zeiteintrag gemacht */
          short utsyslen;        /* signifikante Laenge von uthost */
                                  /* einschliesslich abschliessender
                                     Null */
          char     uthost[257];  /* Host-Name, falls gegeben */
     };



Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

getutx(3C)                                                       getutx(3C)

     getutxent() liest den nächsten Eintrag aus einer utmpx-ähnlichen
     Datei. Wenn die Datei noch nicht geöffnet ist, wird sie geöffnet. Wird
     das Dateiende erreicht, scheitert die Operation.

     getutxid() sucht von der aktuellen Position in der Datei utmpx vor-
     wärts, bis ein Eintrag gefunden wird, dessen uttype dem id->uttype
     entspricht, wenn der angegebene Typ RUNLVL, BOOTTIME, OLDTIME oder
     NEWTIME ist. Ist der in id angegebene Typ INITPROCESS,
     LOGINPROCESS, USERPROCESS oder DEADPROCESS, dann liefert getutxid()
     einen Zeiger auf den ersten Eintrag, dessen Typ einem dieser vier
     Typen entspricht und dessen utid-Feld id->utid entspricht. Wird das
     Dateiende erreicht, ohne daß ein entsprechender Eintrag gefunden
     wurde, scheitert die Operation.

     uttype Komponente   Andere Komponenten mit aussagekräftigen Daten
     _______________________________________________________________________
     EMPTY                Keine anderen
     BOOTTIME            uttv
     OLDTIME             uttv
     NEWTIME             uttv
     USERPROCESS         utid, utuser (Anmeldename des Benutzers),
                          utline, utpid, uttv
     INITPROCESS         utid, utpid, uttv
     LOGINPROCESS        utid, utuser (implementierungsspezifischer Name
                          des Anmeldeprozesses), utpid, uttv
     DEADPROCESS         utid, utpid, uttv

     getutxline() sucht vorwärts von der aktuellen Position in der Datei
     utmpx, bis ein Eintrag mit dem Typ LOGINPROCESS oder USERPROCESS
     gefunden wird, dessen utline Zeichenkette line->utline entspricht.
     Wenn das Dateiende erreicht wird, ohne daß ein entsprechender Eintrag
     gefunden wird, scheitert die Operation.

     pututxline() schreibt die angegebene utmpx-Struktur in die Datei
     utmpx. getutxid() wird verwendet, um nach der korrekten Position in
     der Datei zu suchen, falls diese noch nicht gegeben ist. Es wird
     erwartet, daß der Anwender der pututxline()-Routine den entsprechenden
     Eintrag mit einer der getutx()-Routinen gesucht hat. Ist dies der
     Fall, führt pututxline() keine Suche durch. Wenn pututxline() keine
     entsprechende Stelle für den neuen Eintrag findet, wird der Eintrag am
     Dateiende angehängt. Ein Zeiger auf die Struktur utmpx wird zurückge-
     geben.

     setutxent() setzt die Position des Eingabe-Streams auf den Dateian-
     fang. Dies sollte geschehen, bevor in der gesamten Datei nach einem
     neuen Eintrag gesucht wird.

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






Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

getutx(3C)                                                       getutx(3C)

     Mit utmpxname() läßt sich der Dateiname /var/adm/utmpx in einen ande-
     ren Namen ändern. In den meisten Fällen handelt es sich bei dieser
     anderen Datei um /var/adm/wtmpx. Wenn die Datei nicht existiert, fällt
     dies erst auf, wenn der erste Zugriff auf diese Datei ausgeführt wird.
     utmpxname() öffnet die Datei nicht; die alte Datei wird lediglich
     geschlossen, sofern sie geöffnet war, und der neue Dateiname wird
     gespeichert. Der neue Dateiname muß mit dem Zeichen x enden, um die
     Namensbehandlung zu vereinfachen. Ansonsten wird der Fehlercode 1
     zurückgeliefert.

     getutmp() kopiert den Inhalt der utmpx-Struktur in die utmp-Struktur.
     Wenn die Daten aus einer Komponente von utmpx nicht in das entspre-
     chende Feld von utmp passen, werden Daten abgetrennt.

     getutmpx() kopiert die Daten aus den Komponenten der Struktur utmp in
     die entsprechenden Komponenten der utmpx-Struktur.

     updwtmp() prüft die Existenz von wfile und deren Paralleldatei, dessen
     Name durch Anhängen eines x an wfile generiert wird. Wenn nur eine der
     Dateien existiert, wird die zweite erzeugt und initialisiert, so daß
     sie den Status der existierenden Datei widerspiegelt. utmp wird in die
     Datei wfile geschrieben; die entsprechende utmpx-Struktur wird in die
     Paralleldatei geschrieben.

     updwtmpx() prüft die Existenz von wfilex und deren Paralleldatei, des-
     sen Name durch Abtrennen des letzten x von wfilex generiert wird. Wenn
     nur eine der Dateien existiert, wird die zweite erzeugt und initiali-
     siert, so daß sie den Status der existierenden Datei widerspiegelt.
     utmpx wird in die Datei wfilex geschrieben; die entsprechende utmp-
     Struktur wird in die Paralleldatei geschrieben.

ERGEBNIS
     Tritt beim Prüfen der Zugriffsrechte oder des Dateiendestatus ein
     Lese- oder Schreibfehler auf, so wird ein Nullzeiger zurückgegeben.

FEHLER
     Die folgende Beschreibung der Fehlercodes ist funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     Für die Funktionen endutxent(), getutxent(), getutxid(), getutxline()
     und setutxent() sind keine Fehler definiert.

     Die Funktion pututxline() kann bei folgender Bedingung fehlschlagen:

     EPERM     Der Prozeß verfügt nicht über die entsprechenden Berechti-
               gungen.







Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

getutx(3C)                                                       getutx(3C)

HINWEISE
     Der aktuellste Eintrag wird in einer statischen Struktur abgelegt.
     Bevor erneut auf die Datei zugegriffen wird, muß dieser Eintrag
     kopiert werden. Bei jedem Aufruf von getutxid() oder getutxline()
     überprüfen die Routinen die statische Struktur, bevor weitere E/A-
     Operationen ausgeführt werden. Wenn der Inhalt der statischen Struktur
     dem gesuchten Muster entspricht, wird nicht weitergesucht. Sollen mit
     getutxline() mehrere identische Einträge gesucht werden, so muß nach
     jeder erfolgreichen Suchoperation die statische Struktur gelöscht wer-
     den; macht man dies nicht, würde getutxline() dieselbe Struktur immer
     wieder zurückgeben. Es gibt eine Ausnahme für die obige Regel: Das
     implizite Lesen durch pututxline() (wenn die korrekte Position in der
     Datei noch nicht erreicht wurde) verletzt nicht den Inhalt der stati-
     schen Struktur, die von getutxent(), getutxid() oder getutxline()
     zurückgeliefert wird, wenn der Benutzer die Inhalte verändert hat und
     den Zeiger an pututxline() zurückgibt.

     Diese Routinen verwenden die gepufferte Standard-E/A zur Eingabe;
     pututxline() verwendet eine ungepufferte Schreiboperation, um Kon-
     flikte zwischen Prozessen zu vermeiden, welche die utmpx- und wtmpx-
     Dateien ändern wollen.

DATEIEN
     /var/adm/utmp

     /var/adm/utmpx

     /var/adm/wtmp

     /var/adm/wtmpx

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





















Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

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