Provided by: manpages-es_1.55-10_all bug

NOMBRE

       getutent, getutid, getutline, pututline, setutent, endutent, utmpname -
       acceden a las entradas del fichero utmp

SINOPSIS

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

DESCRIPCI'ON

       utmpname() establece que nombre tiene el fichero en formato utmp al que
       van  a  acceder las otras funciones descritas aqui. Si utmpname() no se
       llama para establecer el nombre de fichero antes de  que  se  usen  las
       otras  funciones,  se  asume  el  nombre  _PATH_UTMP, como se define en
       <paths.h>.

       setutent() rebobina el indicador de fichero al  principio  del  fichero
       utmp.  Generalmente  es  una Buena Idea llamar a esta funcion antes que
       cualquiera de las siguientes.

       endutent() cierra el fichero utmp. Debe llamarse cuando  el  codigo  de
       usuario ha terminado de acceder al fichero con las otras funciones.

       getutent()  lee  una linea desde donde esta actualmente el indicador de
       posicion del fichero en el de formato utmp. Devuelve un puntero  a  una
       estructura que contiene los campos correspondientes a la linea.

       getutid()  busca  hacia adelante desde la posicion actual en el fichero
       utmp segun ut.  Si  ut->ut_type  es  RUN_LVL,  BOOT_TIME,  NEW_TIME,  u
       OLD_TIME,  getutid()  encontrara  la primera entrada cuyo campo ut_type
       concuerde con ut->ut_type.  Si  ut->ut_type  es  uno  de  INIT_PROCESS,
       LOGIN_PROCESS,  USER_PROCESS,  o  DEAD_PROCESS, getutid() encontrara la
       primera entrada cuyo campo ut_id coincida con ut->ut_id.

       getutline() busca hacia adelante desde la posicion actual en el fichero
       utmp.   Rastrea  las  entradas  cuyo  campo  ut_type sea USER_PROCESS o
       LOGIN_PROCESS y devuelve la primera cuyo  campo  ut_line  coincida  con
       ut->ut_line.

       pututline()  escribe  la estructura utmp ut en el fichero utmp. Utiliza
       getutid() para buscar el sitio correcto en el fichero donde insertar la
       nueva  entrada.  Si  no  puede  encontrar  un  sitio apropiado para ut,
       pututline() anadira la nueva entrada al final del fichero.

VALOR DEVUELTO

       getutent(), getutid(), getutline() y pututline() devuelven un puntero a
       una static struct utmp en caso de exito y NULL en caso de error.

EJEMPLO

       El  siguiente ejemplo anade y quita un registro utmp, suponiendo que se
       ejecuta  desde  una  pseudo-terminal.  Para  un  uso  correcto  en  una
       aplicacion  mas realistica, se deberian comprobar los valores devueltos
       por getpwuid() y ttyname().

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

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

         system("echo antes de anadir la entrada:;who");

         entrada.ut_type = USER_PROCESS;
         entrada.ut_pid = getpid();
         strcpy(entrada.ut_line, ttyname(0) + strlen("/dev/"));
         /* solo correcto para ptys llamadas /dev/tty[pqr][0-9a-z] */
         strcpy(entrada.ut_id, ttyname(0) + strlen("/dev/tty"));
         time(&entrada.ut_time);
         strcpy(entrada.ut_user, getpwuid(getuid())->pw_name);
         memset(entrada.ut_host, 0, UT_HOSTSIZE);
         entrada.ut_addr = 0;
         setutent();
         pututline(&entrada);

         system("echo tras anadir la entrada:;who");

         entrada.ut_type = DEAD_PROCESS;
         memset(entrada.ut_line, 0, UT_LINESIZE);
         entrada.ut_time = 0;
         memset(entrada.ut_user, 0, UT_NAMESIZE);
         setutent();
         pututline(&entrada);

         system("echo tras borrar la entrada:;who");

         endutent();
         return 0;
       }

FICHEROS

       /var/run/utmp  datos de los usuarios que estan en el sistema
       /var/log/wtmp  datos de entradas de usuario anteriores

CONFORME A

       XPG 2, SVID 2, Linux FSSTND 1.2

       En XPG2 y SVID2 se dice que la funcion pututline() devuelve void, y asi
       es  en  muchos  sistemas  (AIX, HPUX, Linux libc5).  HPUX introduce una
       nueva  funcion  _pututline()  con  el  prototipo   dado   arriba   para
       pututline() (tambien encontrada en Linux libc5).

       Todas  estas  funciones  estan  obsoletas hoy dia en sistemas no-Linux.
       POSIX 1003.1-2001, siguiendo  a  XPG4.2,  no  tiene  ninguna  de  estas
       funciones, pero en su lugar usa

       #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  estructura  utmpx  es  un  superconjunto de la estructura utmp, con
       campos adicionales, y versiones extendidas de  los  campos  existentes.
       Los ficheros correspondientes son a menudo /var/*/utmpx y /var/*/wtmpx.

       Linux  glibc  por otra parte no usa utmpx puesto que su estructura utmp
       es ya lo suficientemente  grande.  Las  funciones  getutxent  etc.  son
       sinonimos para getutent etc.

V'EASE TAMBI'EN

       utmp(5)