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