1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
|
.\" Copyright 1995 Mark D. Roth (roth@uiuc.edu)
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" References consulted:
.\" Linux libc source code
.\" Solaris manpages
.\"
.\" Traduction 03/11/1996 par Christophe Blaess (ccb@club-internet.fr)
.\"
.TH GETUTENT 3 "3 Novembre 1996" LINUX "Manuel du programmeur Linux"
.SH NOM
getutent, getutid, getutline, pututline, setutent, endutent, utmpname \- Accder aux enregistrements du fichier utmp.
.SH SYNOPSIS
.B #include <utmp.h>
.sp
.B struct utmp *getutent (void);
.br
.BI "struct utmp *getutid (struct utmp *" ut ");"
.br
.BI "struct utmp *getutline (struct utmp *" ut ");"
.sp
.BI "void pututline (struct utmp *" ut ");"
.sp
.B void setutent (void);
.br
.B void endutent (void);
.sp
.BI "void utmpname (const char *" file ");"
.SH DESCRIPTION
\fButmpname()\fP indique le nom du fichier au format utmp utiliser avec les
autres fonctions. Si \fButmpname()\fP n'est pas appel avant les autres fonctions,
elles utiliseront le fichier \fB_PATH_UTMP\fP, dfini dans \fI<paths.h>\fP.
.PP
\fBsetutent()\fP ramne le pointeur au dbut du fichier utmp. Il est gnralement
conseill d'appeler cette fonction au dbut du programme.
.PP
\fBendutent()\fP ferme le fichier utmp. Ceci devrait tre appel une fois que le
programme a termin ses accs au fichier.
.PP
\fBgetutent()\fP lit une ligne du fichier utmp, la position courante.
Elle renvoie un pointeur sur une structure contenant les divers champs
de la ligne.
.PP
\fBgetutid()\fP effectue une recherche dans le fichier utmp, partir de la position
courante, en se basant sur \fIut\fP.
Si \fIut\fP->ut_type vaut \fBRUN_LVL\fP, \fBBOOT_TIME\fP,
\fBNEW_TIME\fP, ou \fBOLD_TIME\fP,
\fBgetutid()\fP recherchera le premier enregistrement dont le champ
ut_type corresponde \fIut\fP->ut_type.
Si \fIut\fP->ut_type vaut \fBINIT_PROCESS\fP, \fBLOGIN_PROCESS\fP,
\fBUSER_PROCESS\fP, ou \fBDEAD_PROCESS\fP,
\fBgetutid()\fP recherchera le premier enregistrement dont le champ
ut_id corresponde \fIut\fP->ut_id.
.PP
\fBgetutline()\fP effectue une recherche dans le fichier utmp, partir de la position
courante.
Elle examine les enregistrements dont le champ ut_type soit \fBUSER_PROCESS\fP
ou \fBLOGIN_PROCESS\fP et renvoie le premier dont le champ \fBut_line\fP corresponde
\fIut\fP->\fBut_line\fP.
.PP
\fBpututline()\fP crit la structure utmp \fIut\fP dans le fichier utmp. Elle
utilise \fBgetutid()\fP pour rechercher l'emplacement ou insrer le nouvel
enregistrement.
Si elle ne trouve pas d'emplacement appropri \fBpututline()\fP ajoutera le
nouvel enregistrement la fin du fichier.
.SH "VALEUR RENVOYE"
.BR getutent "(), " getutid "(), et " getutline ()
renvoient un pointeur sur une
\fBstruct utmp\fP, dfinie dans \fI<utmp.h>\fP ainsi :
.nf
struct utmp {
short ut_type; /* Type de connexion */
pid_t ut_pid; /* PID de la connexion */
char ut_line[12]; /* Priphrique de connexion */
char ut_id[4]; /* Nom de tty abrg */
time_t ut_time; /* Heure de connexion */
char ut_user[8]; /* Nom d'utilisateur */
char ut_host[16]; /* Nom d'hte distant */
long ut_addr; /* Adresse IP d'hte distant */
};
.fi
.SH EXEMPLE
L'exemple suivant ajoute et retire un enregistrement utmp, en supposant
qu'il est invoqu depuis un pseudo-terminal. Dans une vritable application,
il faudrait vrifier les valeurs renvoyes par \fBgetpwuid\fP() et
\fBttyname\fP().
.PP
.nf
#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);
}
.fi
.SH FICHIERS
/var/run/utmp - Base de donnes des utilisateurs connects.
.br
/var/log/wtmp - Base de donnes des connexions passes.
.SH "CONFORMIT"
XPG 2, SVID 2, Linux FSSTND 1.2
.SH "VOIR AUSSI"
\fButmp\fP(5)
.SH TRADUCTION
Christophe Blaess, 1997.
|