Provided by:
manpages-es_1.55-10_all 
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)