Provided by:
manpages-fr-dev_3.27fr1.4-1_all 
NOM
semget - Obtenir l'identifiant d'un ensemble de semaphores
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
int semget(key_t key, int nsems, int semflg);
DESCRIPTION
L'appel systeme semget() renvoie l'identifiant de l'ensemble de
semaphores associe a la valeur de cle key. Un nouvel ensemble contenant
nsems semaphores est cree si key a la valeur IPC_PRIVATE ou si aucun
ensemble n'est associe a key, et si l'option IPC_CREAT est presente
dans semflg.
Si semflg contient a la fois IPC_CREAT et IPC_EXCL et qu'un ensemble de
semaphores existe deja pour la cle key, semget() echoue et errno vaut
EEXIST. (Ceci est analogue a l'effet de la combinaison O_CREAT | O_EXCL
pour open(2).)
Pendant la creation, les 9 bits de poids faibles de l'argument semflg
definissent les permissions d'acces (pour le proprietaire, le groupe et
les autres) au jeu de semaphores, en utilisant le meme format et la
meme signification que les droits d'acces dans open(2). Les permissions
d'execution ne sont pas utilisees par le systeme, et pour un jeu de
semaphores, l'autorisation d'ecriture signifie autorisation de
modification.
Les valeurs des semaphores dans un ensemble qui vient d'etre cree sont
indeterminees (POSIX.1-2001 est explicite sur ce point). Meme si Linux,
comme de nombreuses autres implementations, initialise les valeurs des
semaphores a 0, une application portable ne peut pas compter sur cette
initialisation : elle doit initialiser explicitement les semaphores a
la valeur souhaitee.
Durant la creation, la structure de donnees semid_ds (consultez
semctl(2)) controlant le jeu de semaphores est initialisee ainsi par
semget() :
sem_perm.cuid et sem_perm.uid contiennent l'UID effectif du
processus appelant.
sem_perm.cgid et sem_perm.gid contiennent le GID effectif du
processus appelant.
Les 9 bits de poids faibles de sem_perm.mode contiennent les 9
bits de poids faibles de semflg.
sem_nsems recoit la valeur nsems.
sem_otime est mis a 0.
sem_ctime est rempli avec l'heure actuelle.
L'argument nsems peut valoir 0 (ignore) si l'appel systeme n'est pas
une creation d'ensemble de semaphores. Autrement nsems doit etre
superieur a 0 et inferieur ou egal au nombre maximal de semaphores par
ensemble (SEMMSL).
Si le jeu de semaphores existe deja, les permissions d'acces sont
controlees.
VALEUR RENVOY'EE
Si l'appel reussit, il renvoie l'identifiant de l'ensemble (un entier
positif), sinon il renvoie -1 et errno contient le code d'erreur.
ERREURS
En cas d'erreur, errno prend l'une des valeurs suivantes :
EACCES Le jeu de semaphore associe a key existe, mais le processus n'a
aucun droit d'acces sur lui et n'a pas la capacite
CAP_IPC_OWNER.
EEXIST Le jeu de semaphore associe a key existe mais l'argument semflg
precise a la fois IPC_CREAT et IPC_EXCL.
EINVAL nsems est inferieur a zero ou superieur a la limite sur le
nombre de semaphores par ensemble, (SEMMSL), ou l'ensemble de
semaphores identifie par key existe deja, et nsems est plus
grand que le nombre de semaphores par ensemble.
ENOENT Aucun jeu de semaphore associe a key n'existe et l'argument
semflg ne precise pas IPC_CREAT.
ENOMEM Pas assez de memoire pour creer les structures necessaires.
ENOSPC Le nombre maximal de jeux de semaphores sur le systeme (SEMMNI)
est atteint, ou le nombre maximal de semaphores sur le systeme
est atteint (SEMMNS).
CONFORMIT'E
SVr4, POSIX.1-2001.
NOTES
IPC_PRIVATE n'est pas une option, mais un objet de type key_t. Si l'on
utilise cette valeur speciale dans l'argument key, l'appel systeme ne
se preoccupera que des 9 bits de poids faibles de semflg et tentera de
creer un nouveau jeu de semaphores.
Les limites suivantes concernent l'appel systeme semget() :
SEMMNI Nombre maximal de jeux de semaphores sur le systeme : depend de
la politique (sous Linux, cette limite peut etre lue et modifiee
dans le quatrieme champ de /proc/sys/kernel/sem).
SEMMSL Nombre maximal de semaphores par ensemble : dependant de
l'implementation (sous Linux, cette limite peut etre lue et
modifiee dans le premier champ de /proc/sys/kernel/sem).
SEMMNS Nombre maximal de semaphores sur le systeme : depend de la
politique (sous Linux, cette limite peut etre lue et modifiee
dans le second champ de /proc/sys/kernel/sem). Les valeurs
superieures a SEMMSL * SEMMNI sont incorrectes.
BOGUES
Le choix du nom IPC_PRIVATE est malheureux, IPC_NEW aurait mieux decrit
sa fonction.
Les semaphores dans un ensemble ne sont pas initialises par semget().
Pour initialiser les semaphores, il faut utiliser semctl(2) pour
effectuer une operation SETVAL ou SETALL sur l'ensemble de semaphores.
(Lorsque plusieurs pairs ne savent pas lequel initialisera l'ensemble
en premier, un test pour une valeur non nulle de sem_otime dans la
structure de donnees associee renvoyee par l'operation IPC_STAT de
semctl(2) peut etre utilisee pour eviter les problemes d'acces
concurrents.)
VOIR AUSSI
semctl(2), semop(2), ftok(3), capabilities(7), sem_overview(7),
svipc(7)
COLOPHON
Cette page fait partie de la publication 3.27 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe de traduction
francophone au sein du projet perkamon
<URL:http://perkamon.alioth.debian.org/>.
Christophe Blaess <URL:http://www.blaess.fr/christophe/> (1996-2003),
Alain Portal <URL:http://manpagesfr.free.fr/> (2003-2006). Julien
Cristau et l'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.