Provided by: manpages-fr-dev_2.45.1-1_all bug
 

NOM

        getutent, getutid, getutline, pututline, setutent, endutent, utmpname -
        Accéder aux enregistrements utmp.
 

SYNOPSIS

        #include <utmp.h>
 
        struct utmp *getutent(void);
        struct utmp *getutid(struct utmp *ut);
        struct utmp *getutline(struct utmp *ut);
 
        struct utmp *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 fonc‐
        tions, 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 contenant 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  correspond  à ut->ut_type. Si
        ut->ut_type  vaut   INIT_PROCESS,   LOGIN_PROCESS,   USER_PROCESS,   ou
        DEAD_PROCESS,  getutid()  recherchera le premier enregistrement dont le
        champ ut_id correspond à ut->ut_id.
 
        getutline() effectue une recherche dans le fichier utmp, à partir de la
        position  courante.  Elle  examine  les  enregistrements  dont le champ
        ut_type est USER_PROCESS ou LOGIN_PROCESS et renvoie le premier dont le
        champ ut_line correspond à ut->ut_line.
 
        pututline()  écrit  la  structure  utmp  ut  dans le fichier utmp. Elle
        utilise getutid() pour rechercher l’emplacement ou  insérer  le  nouvel
        enregistrement.  Si  elle ne trouve pas d’emplacement approprié, putut     
        line() ajoutera le nouvel enregistrement à la fin du fichier.
        getutent(), getutid(), getutline() et pututline() renvoient un pointeur
        sur  une  struct  utmp, ou NULL en cas d’erreur. Cette structure struct
        utmp est allouée statiquement, et peut être écrasée par des appels suc‐
        cessifs.
        Les  fonctions  ci-dessus ne sont pas sûres dans un contexte de thread.
        La glibc ajoute les versions ré-entrantes.
 
        #define _GNU_SOURCE /* ou _SVID_SOURCE ou _BSD_SOURCE */
        #include <utmp.h>
 
        int getutent_r(struct utmp *ubuf, struct utmp **ubufp);
 
        int getutid_r(struct utmp *ut,
         struct utmp *ubuf, struct utmp **ubufp);
 
        int getutline_r(struct utmp *ut,
         struct utmp *ubuf, struct utmp **ubufp);
 
        Ces fonctions sont des extensions GNU, analogues aux fonctions de  même
        nom  sans  le suffixe « _r ». Le paramètre ubuf fournit à ces fonctions
        un endroit où stocker leur résultat. Si elles  réussissent  elles  ren‐
        voient  0  et  un  pointeur  vers  le  résultat  dans  *ubufp. Si elles
        échouent, ces fonctions renvoient -1.
 

EXEMPLE

        L’exemple suivant ajoute et retire un enregistrement utmp, en supposant
        qu’il  est invoqué depuis un pseudo-terminal. Dans une véritable appli‐
        cation, 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 ();
           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 connectés.
        /var/log/wtmp - Base de données des connexions passées.
        XPG2, SVr4.
 
        Dans  XPG2 et SVID 2, la fonction pututline() est décrite comme renvoy‐
        ant « void », et c’est le cas sur de  nombreux  systèmes  (AIX,  HP-UX,
        Linux  libc5).  HP-UX introduit une nouvelle fonction _pututline() avec
        le prototype fourni plus haut pour pututline() (existe  aussi  dans  la
        libc5 de Linux).
 
        Toutes  ces  fonctions  sont  maintenant obsolètes sur les systèmes non
        Linux. POSIX.1-2001, suivant SUSv1, ne propose aucune de ces fonctions,
        mais utilise plutôt
 
        #include <utmpx.h>
 
        struct utmpx *getutxent(void);
        struct utmpx *getutxid(const struct utmpx *);
        struct utmpx *getutxline(const struct utmpx *);
        struct utmpx *pututxline(const struct utmpx *);
        void setutxent(void);
        void endutxent(void);
 
        La  structure  utmpx  est un surensemble de la structure utmp, avec des
        champs supplémentaires, et une version plus large des champs existants.
        Les  fichiers correspondants sont souvent /var/*/utmpx et /var/*/wtmpx.
 
        D’un autre côté, la glibc sous Linux n’utilise pas utmpx car sa  struc‐
        ture  utmp est déjà assez grande. Les fonctions getutxent etc. sont des
        alias pour getutent etc.
        utmp(5), feature_test_macros(7)
 

TRADUCTION

        Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
        Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
        Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
        disposition sur http://manpagesfr.free.fr/.
 
        Les mises à jour et corrections de la version présente dans Debian sont
        directement gérées par Florentin Duneau <fduneau@gmail.com> et l’équipe
        francophone de traduction de Debian.
 
        Veuillez   signaler   toute   erreur   de   traduction  en  écrivant  à
        <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
        paquet manpages-fr.
 
        Vous  pouvez  toujours avoir accès à la version anglaise de ce document
        en utilisant la commande « man -L C <section> <page_de_man> ».
 
                                 25 juillet 1996                    GETUTENT(3)