Man page - pututxline(3)

Packages contains this manual

Available languages:

en fr pl ja ru de

Manual

getutent

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
FICHIERS
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
Notes de la glibc
EXEMPLES
VOIR AUSSI
TRADUCTION

NOM

getutent, getutid, getutline, pututline, setutent, endutent, utmpname - Accéder aux enregistrements utmp

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#include <utmp.h>

struct utmp *getutent(void);
struct utmp *getutid(const struct utmp *
ut );
struct utmp *getutline(const struct utmp *
ut );

struct utmp *pututline(const struct utmp * ut );

void setutent(void);
void endutent(void);

int utmpname(const char * file );

DESCRIPTION

Les nouvelles applications devraient utiliser les versions « utmpx » spécifiées par POSIX.1 de ces fonctions ; voir STANDARDS.

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 contenant les divers champs de la ligne. La dĂ©finition de cette structure peut ĂȘtre consultĂ©e dans utmp (5).

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 correspond Ă  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 Ă  ut->ut_id .

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

pututline () Ă©crit la structure utmp ut dans le fichier utmp. Elle utilise getutid () pour rechercher l’emplacement ou insĂ©rer le nouvel enregistrement. Si elle ne trouve pas d’emplacement appropriĂ© pour ut , pututline () ajoutera le nouvel enregistrement Ă  la fin du fichier.

VALEUR RENVOYÉE

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 trouvé »). Cette structure utmp est allouĂ©e statiquement, et peut ĂȘtre Ă©crasĂ©e par des appels successifs.

Si elle réussit, pututline () renvoie ut ; si elle échoue, elle renvoie NULL.

utmpname () renvoie 0 si le nouveau nom a été correctement enregistré, ou -1 si elle échoue.

En cas d’échec, ces fonctions dĂ©finissent errno pour indiquer l’erreur.

ERREURS

ENOMEM

Plus assez de mémoire.

ESRCH

Enregistrement non trouvé.

setutent (), pututline () et les fonctions getut* () peuvent également échouer pour les raisons décrites dans open (2).

FICHIERS

/var/run/utmp

base de données des utilisateurs actuellement connectés

/var/log/wtmp

base de données des connexions passées.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3863899-1.png

Dans la table ci-dessus, utent dans race:utent veut dire que si une des fonctions setutent (), getutent (), getutid (), getutline (), pututline (), utmpname () ou endutent () est utilisĂ©e en parallĂšle dans diffĂ©rents fils d’exĂ©cution (thread) d’un programme, alors des situations de concurrences de donnĂ©es peuvent se produire.

STANDARDS

Aucun.

HISTORIQUE

XPG2, SVr4.

Dans XPG2 et SVID 2, la fonction pututline () est dĂ©crite comme renvoyant « void », et c’est le cas sur de nombreux systĂšmes (AIX, HP-UX). HP-UX introduit une nouvelle fonction _pututline () avec le prototype fourni plus haut pour pututline ().

Toutes ces fonctions sont maintenant obsolĂštes sur les systĂšmes non Linux. POSIX.1-2001 et POSIX.1-2008, suivant SUSv1, ne proposent aucune de ces fonctions, mais utilisent plutĂŽt

#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 mĂȘmes tĂąches que leurs Ă©quivalents sans le « x » mais utilisent une structure utmpx , dĂ©finie sous Linux pour ĂȘtre identique Ă  la structure utmp . Pour ĂȘtre complet, la glibc fournit Ă©galement utmpxname (), bien que cette fonction ne soit pas spĂ©cifiĂ©e par POSIX.1.

Sur quelques autres systÚmes, la structure utmpx est un surensemble de la structure utmp , avec des champs supplémentaires, et des versions plus grandes des champs existants, et des fichiers sont maintenus en parallÚle, souvent /var/*/utmpx et /var/*/wtmpx .

D’un autre cĂŽtĂ©, la glibc sous Linux n’utilise pas de fichier utmpx en parallĂšle car sa structure utmp est dĂ©jĂ  assez grande. Les fonctions contenant un « x » listĂ©es ci-dessus sont simplement des alias des fonctions sans le « x » (par exemple, getutxent () est un alias de getutent ()).

NOTES

Notes de la glibc

Les fonctions ci-dessus ne sont pas sûres dans un contexte de thread. La glibc ajoute les versions réentrantes.

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

Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

getutent_r (), getutid_r (), getutline_r () :
_GNU_SOURCE
|| /* depuis la glibc 2.19 : */ _DEFAULT_SOURCE
|| /* glibc <= 2.19 : */ _SVID_SOURCE || _BSD_SOURCE

Ces fonctions sont des extensions GNU, analogues aux fonctions de mĂȘme nom sans le suffixe « _r ». Le paramĂštre ubuf fournit Ă  ces fonctions un endroit oĂč stocker leur rĂ©sultat. Si elles rĂ©ussissent, elles renvoient 0 et un pointeur vers le rĂ©sultat est Ă©crit dans *ubufp . Si elles Ă©chouent, ces fonctions renvoient -1 . Il n’y a pas d’équivalent « utmpx » aux fonctions ci-dessus. (POSIX.1 ne spĂ©cifie pas ces fonctions.)

EXEMPLES

L’exemple suivant ajoute et retire un enregistrement utmp, en supposant qu’il est invoquĂ© depuis un pseudoterminal. Dans une vĂ©ritable application, il faudrait vĂ©rifier les valeurs renvoyĂ©es par getpwuid (3) et ttyname (3).

#include <pwd.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <utmp.h>
int
main(void)
{
struct utmp entry;
system("echo avant l’ajout d’une entrĂ©e :;who");
entry.ut_type = USER_PROCESS;
entry.ut_pid = getpid();
strcpy(entry.ut_line, ttyname(STDIN_FILENO) + strlen("/dev/"));
/* correct seulement pour les ptys nommés /dev/tty[pqr][0-9a-z] */
strcpy(entry.ut_id, ttyname(STDIN_FILENO) + strlen("/dev/tty"));
entry.ut_time = time(NULL);
strcpy(entry.ut_user, getpwuid(getuid())->pw_name);
memset(entry.ut_host, 0, UT_HOSTSIZE);
entry.ut_addr = 0;
setutent();
pututline(&entry);
system("echo aprĂšs l’ajout d’une entrĂ©e :;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 aprĂšs le retrait d’une entrĂ©e:;who");
endutent();
exit(EXIT_SUCCESS);
}

VOIR AUSSI

getutmp (3), utmp (5)

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org>, Jean-Baptiste Holcroft <jean-baptiste@holcroft.fr> et Grégoire Scano <gregoire.scano@malloc.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .