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