semget

SEMGET(2)                 Manuel du programmeur Linux                SEMGET(2)



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

       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 faible de sem_perm.mode contiennent les 9
              bits de poids faible 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'échec, 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 IPC_CREAT et IPC_EXCL ont été tous les deux indiqués dans
              semflag, mais un ensemble de sémaphores de clé key existe
              déjà .

       EINVAL nsems est inférieur à zéro ou supérieur à la limite sur le
              nombre de sémaphores par ensemble, (SEMMSL).

       EINVAL Un ensemble de sémaphores identifié par key existe déjà ,
              mais 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 faible de semflg et tentera de
       créer un nouveau jeu de sémaphores.

   Initialisation des sémaphores
       Les valeurs des sémaphores dans un ensemble qui vient d'être créé
       sont indéterminées (POSIX.1-2001 et POSIX.1-2008 sont explicites sur
       ce point, bien que POSIX.1-2008 note que de futures versions du
       standard pourraient exiger des implémentations qu'elles initialisent
       les sémapohores à 0). 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.

       L'initialisation peut être effectuée avec les opérations SETVAL ou
       SETALL de la fonction semctl(2). Lorsque plusieurs concurrents ne
       savent pas qui sera le premier à initialiser le jeu de sémaphores, il
       est possible de vérifier que le membre sem_otime de la structure
       récupérée par l'opération semctl(2) IPC_STAT est non nul pour
       éviter les conditions de concurrence.

   Limites des sémaphores
       Les limites suivantes concernent l'appel système semget() :

       SEMMNI Limite système du nombre de jeux de sémaphores : 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 Limite système du nombre de sémaphores : dépend de la
              politique (sous Linux, cette limite peut être lue et modifiée
              dans le second champ de /proc/sys/kernel/sem). Le nombre de
              sémaphores est également limité par le produit de SEMMSL avec
              SEMMNI.

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

VOIR AUSSI
       semctl(2), semop(2), ftok(3), capabilities(7), sem_overview(7),
       svipc(7)

COLOPHON
       Cette page fait partie de la publication 3.70 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 Ã
       <perkamon-fr@traduc.org>.

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



Linux                             21 mai 2014                        SEMGET(2)