GETUTENT(3)        Manuel du programmeur Linux        GETUTENT(3)


NOM
       getutent,  getutid,  getutline, pututline, setutent, endu­
       tent, utmpname - Accéder aux  enregistrements  du  fichier
       utmp.

SYNOPSIS
       #include <utmp.h>

       struct utmp *getutent (void);
       struct utmp *getutid (struct utmp *ut);
       struct utmp *getutline (struct utmp *ut);

       void pututline (struct utmp *ut);

       void setutent (void);
       void endutent (void);

       void utmpname (const char *file);

DESCRIPTION
       utmpname()  indique  le  nom  du  fichier au format utmp à
       utiliser avec les autres fonctions.  Si  utmpname()  n'est
       pas  appelé  avant les autres fonctions, elles utiliseront
       le fichier _PATH_UTMP, défini dans <paths.h>.

       setutent() ramène le pointeur au début du fichier utmp. Il
       est  généralement  conseillé  d'appeler  cette fonction au
       début du programme.

       endutent() ferme  le  fichier  utmp.   Ceci  devrait  être
       appelé  une  fois  que le programme a terminé ses accès au
       fichier.

       getutent() lit une ligne du fichier utmp,  à  la  position
       courante.  Elle renvoie un pointeur sur une structure con­
       tenant les divers champs de la ligne.

       getutid() effectue une recherche dans le fichier  utmp,  à
       partir de la position courante, en se basant sur ut.

       Si  ut->ut_type  vaut  RUN_LVL,  BOOT_TIME,  NEW_TIME,  ou
       OLD_TIME, getutid() recherchera le premier  enregistrement
       dont le champ ut_type corresponde à ut->ut_type.

       Si ut->ut_type vaut INIT_PROCESS, LOGIN_PROCESS, USER_PRO­
       CESS, ou DEAD_PROCESS, getutid()  recherchera  le  premier
       enregistrement   dont   le   champ   ut_id  corresponde  à
       ut->ut_id.

       getutline() effectue une recherche dans le fichier utmp, à
       partir  de  la position courante.  Elle examine les enreg­
       istrements dont le  champ  ut_type  soit  USER_PROCESS  ou
       LOGIN_PROCESS  et renvoie le premier dont le champ ut_line
       corresponde à ut->ut_line.



LINUX                    3 Novembre 1996                        1





GETUTENT(3)        Manuel du programmeur Linux        GETUTENT(3)


       pututline() écrit la structure utmp  ut  dans  le  fichier
       utmp.   Elle  utilise getutid() pour rechercher l'emplace­
       ment ou insérer le  nouvel  enregistrement.   Si  elle  ne
       trouve pas d'emplacement approprié pututline() ajoutera le
       nouvel enregistrement à la fin du fichier.

VALEUR RENVOYÉE
       getutent(), getutid(), et getutline() renvoient  un  poin­
       teur sur une struct utmp, définie dans <utmp.h> ainsi :

       struct utmp {
         short  ut_type;     /* Type de connexion         */
         pid_t  ut_pid;      /* PID de la connexion       */
         char   ut_line[12]; /* Périphérique de connexion */
         char   ut_id[4];    /* Nom de tty abrégé         */
         time_t ut_time;     /* Heure de connexion        */
         char   ut_user[8];  /* Nom d'utilisateur         */
         char   ut_host[16]; /* Nom d'hôte distant        */
         long   ut_addr;     /* Adresse IP d'hôte distant */
       };

EXEMPLE
       L'exemple suivant ajoute et retire un enregistrement utmp,
       en supposant qu'il est invoqué depuis un  pseudo-terminal.
       Dans  une  véritable application, il faudrait vérifier les
       valeurs renvoyées par getpwuid() et ttyname().

       #include <string.h>
       #include <stdlib.h>
       #include <pwd.h>
       #include <unistd.h>
       #include <utmp.h>

          int
       main (int argc, char * argv [])
       {
          struct utmp entry;

          system ("echo Avant d ajouter un enregistrement :;who");

          entry . ut_type = USER_PROCESS;
          entry . ut_pid  = getpid();

          strcpy (entry . ut_line, ttyname (0) + strlen ("/dev/"));

          /* ne fonctionne qu'avec les pseudo tty /dev/tty[pqr][0-9a-z] */

          strcpy (entry . ut_id, ttyname (0) + 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 ();



LINUX                    3 Novembre 1996                        2





GETUTENT(3)        Manuel du programmeur Linux        GETUTENT(3)


          pututline (& entry);

          system ("echo Apres l ajout :;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 Apres suppression de l enregistrement :;who");

          endutent ();

          return (0);
       }

FICHIERS
       /var/run/utmp - Base  de  données  des  utilisateurs  con­
       nectés.
       /var/log/wtmp - Base de données des connexions passées.

CONFORMITÉ
       XPG 2, SVID 2, Linux FSSTND 1.2

VOIR AUSSI
       utmp(5)


TRADUCTION
       Christophe Blaess, 1997.

























LINUX                    3 Novembre 1996                        3