Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       getutent, getutid, getutline, pututline, setutent, endutent, utmpname -
       Acceder 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);

       int utmpname(const char *file);

DESCRIPTION

       Les nouvelles applications devraient utiliser les versions  << utmpx >>
       specifiees par POSIX.1 de ces fonctions ; voir CONFORMITE.

       utmpname() indique le nom du fichier au format utmp a utiliser avec les
       autres fonctions. Si utmpname()  n'est  pas  appele  avant  les  autres
       fonctions,   elles  utiliseront  le  fichier  _PATH_UTMP,  defini  dans
       <paths.h>.

       setutent() ramene  le  pointeur  au  debut  du  fichier  utmp.  Il  est
       generalement conseille d'appeler cette fonction au debut du programme.

       endutent() ferme le fichier utmp. Ceci devrait etre appele une fois que
       le programme a termine ses acces au fichier.

       getutent() lit une ligne du fichier utmp, a la position courante.  Elle
       renvoie un pointeur sur une structure contenant les divers champs de la
       ligne. La definition  de  cette  structure  peut  etre  consultee  dans
       utmp(5).

       getutid()  effectue  une recherche dans le fichier utmp, a 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  a  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 a ut->ut_id.

       getutline() effectue une recherche dans le fichier utmp, a 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 a ut->ut_line.

       pututline() ecrit la structure utmp  ut  dans  le  fichier  utmp.  Elle
       utilise  getutid()  pour  rechercher l'emplacement ou inserer le nouvel
       enregistrement. Si elle ne trouve pas d'emplacement approprie pour  ut,
       pututline() ajoutera le nouvel enregistrement a la fin du fichier.

VALEUR RENVOY'EE

       getutent(),  getutid()  et  getutline()  renvoient  un pointeur sur une
       structure utmp, ou NULL en cas d'erreur (ce qui inclut  le  cas  << pas
       d'enregistrement   trouve >>).   Cette   structure   utmp  est  allouee
       statiquement, et peut etre ecrasee par des appels successifs.

       Si elle reussit, pututline() renvoie ut ; si elle echoue, elle  renvoie
       NULL.

       utmpname()  renvoie  0 si le nouveau nom a ete correctement enregistre,
       ou -1 si elle echoue.

ERREURS

       ENOMEM Plus de memoire disponible.

       ESRCH  Enregistrement non trouve.

       setutent(), pututent() et  les  fonctions  getut*()  peuvent  egalement
       echouer pour les raisons decrites dans open(2).

FICHIERS

       /var/run/utmp - Base de donnees des utilisateurs connectes.
       /var/log/wtmp - Base de donnees des connexions passees.

CONFORMIT'E

       XPG2, SVr4.

       Dans  XPG2  et  SVID 2,  la  fonction  pututline()  est  decrite  comme
       renvoyant << void >>, et c'est le cas sur de  nombreux  systemes  (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 obsoletes sur les systemes non
       Linux. POSIX.1-2001, suivant SUSv1, ne propose aucune de ces fonctions,
       mais utilise plutot

       #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);

       Ces fonctions sont fournies par la glibc et effectuent les memes taches
       que leurs equivalents sans le  << x >>  mais  utilisent  une  structure
       utmpx, definie sous Linux pour etre identique a la structure utmp. Pour
       etre complet, la glibc fournit egalement utmpxname(),  bien  que  cette
       fonction ne soit pas specifiee par POSIX.1.

       Sur quelques autres systemes, la structure utmpx est un sur-ensemble de
       la structure utmp, avec des champs  supplementaires,  et  des  versions
       plus  grandes  des  champs existants, et des fichiers sont maintenus en
       parallele, souvent /var/*/utmpx et /var/*/wtmpx.

       D'un autre cote, la glibc sous Linux n'utilise pas de fichier utmpx  en
       parallele  car  sa  structure utmp est deja assez grande. Les fonctions
       getutxent() etc. sont des alias pour getutent() etc.

NOTES

   Notes sur la glibc
       Les fonctions ci-dessus ne sont pas sures dans un contexte  de  thread.
       La glibc ajoute les versions reentrantes.

       #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 meme
       nom sans le suffixe << _r >>. Le parametre ubuf fournit a ces fonctions
       un  endroit  ou  stocker  leur  resultat.  Si  elles  reussissent elles
       renvoient 0 et un pointeur vers  le  resultat  dans  *ubufp.  Si  elles
       echouent,  ces  fonctions  renvoient  -1.  Il  n'y  a  pas d'equivalent
       << utmpx >> aux fonctions ci-dessus. (POSIX.1 ne specifie pas de telles
       fonctions.)

EXEMPLE

       L'exemple suivant ajoute et retire un enregistrement utmp, en supposant
       qu'il  est  invoque  depuis  un  pseudo-terminal.  Dans  une  veritable
       application, il faudrait verifier les valeurs renvoyees par getpwuid(3)
       et ttyname(3).

       #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 before adding entry:;who");

           entry.ut_type = USER_PROCESS;
           entry.ut_pid = getpid();
           strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/"));
           /* only correct for ptys named /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 after adding entry:;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 after removing entry:;who");

           endutent();
           exit(EXIT_SUCCESS);
       }

VOIR AUSSI

       getutmp(3), utmp(5), feature_test_macros(7)

COLOPHON

       Cette page fait partie de  la  publication  3.27  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone        au        sein        du       projet       perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe Blaess  <URL:http://www.blaess.fr/christophe/>  (1996-2003),
       Alain  Portal  <URL:http://manpagesfr.free.fr/> (2003-2006).  Florentin
       Duneau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.

                                 29 juin 2008                      GETUTENT(3)