Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       semget - Obtenir l'identifiant d'un ensemble de sémaphores System V

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  système  semget() renvoie l'identifiant de l'ensemble de sémaphores System V associé à la valeur
       de clé key. Un nouvel ensemble contenant nsems sémaphores est créé si key a la valeur IPC_PRIVATE  ou  si
       aucun ensemble n'est associé à key, et si l'option IPC_CREAT est présente dans semflg.

       Si  semflg  contient  à la fois IPC_CREAT et IPC_EXCL et qu'un ensemble de sémaphores existe déjà pour la
       clé key, semget() échoue et errno vaut EEXIST. (Ceci est analogue à l'effet de la combinaison  O_CREAT  |
       O_EXCL pour open(2).)

       Pendant la création, les 9 bits de poids faibles de l'argument semflg définissent les permissions d'accès
       (pour  le  propriétaire, le groupe et les autres) au jeu de sémaphores, en utilisant le même format et la
       même signification que les droits d'accès dans open(2). Les permissions d'exécution ne sont pas utilisées
       par le système, et pour  un  jeu  de  sémaphores,  l'autorisation  d'écriture  signifie  autorisation  de
       modification.

       Les  valeurs  des  sémaphores dans un ensemble qui vient d'être créé sont indéterminées (POSIX.1-2001 est
       explicite sur ce point). Même si Linux,  comme  de  nombreuses  autres  implémentations,  initialise  les
       valeurs  des sémaphores à 0, une application portable ne peut pas compter sur cette initialisation : elle
       doit initialiser explicitement les sémaphores à la valeur souhaitée.

       Durant la création, la  structure  de  données  semid_ds  (consultez  semctl(2))  contrôlant  le  jeu  de
       sémaphores est initialisée 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 reçoit la valeur nsems.

              sem_otime est mis à 0.

              sem_ctime est rempli avec l'heure actuelle.

       L'argument  nsems  peut  valoir  0  (ignore)  si  l'appel  système  n'est  pas une création d'ensemble de
       sémaphores. Autrement nsems doit être supérieur à 0 et inférieur ou égal au nombre maximal de  sémaphores
       par ensemble (SEMMSL).

       Si le jeu de sémaphores existe déjà, les permissions d'accès sont contrôlées.

VALEUR RENVOYÉE

       Si  l'appel  réussit,  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 sémaphore associé à key existe, mais le processus n'a aucun droit d'accès sur lui et n'a
              pas la capacité CAP_IPC_OWNER.

       EEXIST Le jeu de sémaphore associé a key existe mais l'argument semflg précise à  la  fois  IPC_CREAT  et
              IPC_EXCL.

       EINVAL nsems  est  inférieur  à  zéro  ou supérieur à la limite sur le nombre de sémaphores par ensemble,
              (SEMMSL), ou l'ensemble de sémaphores identifié par key existe déjà, et nsems est plus  grand  que
              le nombre de sémaphores par ensemble.

       ENOENT Aucun jeu de sémaphore associé a key n'existe et l'argument semflg ne précise pas IPC_CREAT.

       ENOMEM Pas assez de mémoire pour créer les structures nécessaires.

       ENOSPC Le  nombre maximal de jeux de sémaphores sur le système (SEMMNI) est atteint, ou le nombre maximal
              de sémaphores sur le système est atteint (SEMMNS).

CONFORMITÉ

       SVr4, POSIX.1-2001.

NOTES

       L'inclusion de <sys/types.h> et <sys/ipc.h> n'est pas nécessaire sous Linux et n'est  exigée  par  aucune
       version  de POSIX. Cependant, certaines implémentations anciennes nécessitent l'inclusion de ces fichiers
       d'en-tête, et le SVID documente aussi leur inclusion. Les applications ayant pour  but  d'être  portables
       pourraient inclure ces fichiers d'en-tête.

       IPC_PRIVATE n'est pas une option, mais un objet de type key_t. Si l'on utilise cette valeur spéciale dans
       l'argument key, l'appel système ne se préoccupera que des 9 bits de poids faibles de semflg et tentera de
       créer un nouveau jeu de sémaphores.

       Les limites suivantes concernent l'appel système semget() :

       SEMMNI Nombre  maximal  de  jeux de sémaphores sur le système : dépend de la politique (sous Linux, cette
              limite peut être lue et modifiée dans le quatrième champ de /proc/sys/kernel/sem).

       SEMMSL Nombre maximal de sémaphores par ensemble :  dépendant  de  l'implémentation  (sous  Linux,  cette
              limite peut être lue et modifiée dans le premier champ de /proc/sys/kernel/sem).

       SEMMNS Nombre  maximal  de  sémaphores  sur le système : dépend de la politique (sous Linux, cette limite
              peut être lue et modifiée dans le second champ de /proc/sys/kernel/sem). Les valeurs supérieures à
              SEMMSL * SEMMNI sont incorrectes.

BOGUES

       Le choix du nom IPC_PRIVATE est malheureux, IPC_NEW aurait mieux décrit sa fonction.

       Les sémaphores dans un ensemble ne sont pas initialisés par semget(). Pour initialiser les sémaphores, il
       faut utiliser semctl(2) pour effectuer une opération SETVAL  ou  SETALL  sur  l'ensemble  de  sémaphores.
       (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  données associée renvoyée par l'opération IPC_STAT de
       semctl(2) peut être utilisée pour éviter les problèmes d'accès 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.65 du projet man-pages Linux. Une description du projet et des
       instructions    pour    signaler    des    anomalies    peuvent     être     trouvées     à     l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

       Veuillez  signaler  toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».

Linux                                              31 mai 2012                                         SEMGET(2)