Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

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> >>.