1. NOM

sem_open - Initialiser et ouvrir un sémaphore nommé

2. SYNOPSIS

 
Sélectionnez
#include <fcntl.h>           /* Pour les constantes O_* */
#include <sys/stat.h>        /* Pour les constantes des modes */
#include <semaphore.h>
sem_t *sem_open(const char *name, int oflag);
sem_t *sem_open(const char *name, int oflag,
                mode_t mode, unsigned int value);



Effectuez l'édition des liens avec l'option -pthread.

3. DESCRIPTION

sem_open() crée un nouveau sémaphore POSIX ou en ouvre un existant. Le sémaphore est identifié par name. Pour les détails de la construction de name, consultez sem_overview(7). L'argument oflag spécifie les attributs qui contrôlent la manière d'opérer de l'appel (les définitions des valeurs des attributs peuvent être obtenues en incluant <fcntl.h>). Si O_CREAT est spécifié dans oflag, le sémaphore est créé s'il n'existe pas déjà. Le propriétaire (UID) du sémaphore est l'UID effectif du processus appelant. Le groupe propriétaire (GID) est le GID effectif du processus appelant. Si O_CREAT et O_EXCL sont tous les deux spécifiés dans oflag, une erreur sera renvoyée si le sémaphore du nom de name existe déjà.

Si O_CREAT est spécifié dans oflag, deux autres arguments doivent être fournis. L'argument mode spécifie les permissions à placer sur le nouveau sémaphore, comme pour open(2) (les définitions symboliques des bits de permissions peuvent être obtenues en incluant <sys/stat.h>). Ces permissions sont « masquées » avec le umask du processus. Les permissions de lecture et d'écriture devraient être accordées à chaque classe d'utilisateurs qui aura accès au sémaphore. L'argument value spécifie la valeur initiale du nouveau sémaphore. Si O_CREAT est spécifié et que le sémaphore du nom de name existe déjà, mode et value sont ignorés.

4. VALEUR RENVOYÉE

S'il réussit, sem_open() renvoie l'adresse du nouveau sémaphore ; cette adresse est utilisée lors de l'appel des autres fonctions sur les sémaphores. S'il échoue, sem_open() renvoie SEM_FAILED et écrit errno en conséquence.

5. ERREURS

  • EACCES
        Le sémaphore existe mais l'appelant n'a pas la permission de l'ouvrir.
  • EEXIST
        O_CREAT et O_EXCL ont été tous les deux spécifiés dans oflag, mais un sémaphore avec le nom de name existe déjà.
  • EINVAL
        value était plus grand que SEM_VALUE_MAX.
  • EINVAL
        name consiste en une barre oblique « / », suivie d'aucun autre caractère.
  • EMFILE
        Le processus a déjà le nombre maximal de fichiers ouverts.
  • ENAMETOOLONG
        name est trop long.
  • ENFILE
        La limite du nombre total de fichiers ouverts sur le système a été atteinte.
  • ENOENT L'attribut O_CREAT n'était pas spécifié dans oflag, et aucun sémaphore avec le nom de name n'existe ; ou O_CREAT était spécifié, mais name n'était pas correctement formé.
  • ENOMEM
        Mémoire insuffisante.

6. CONFORMITÉ

POSIX.1-2001.

7. VOIR AUSSI

8. COLOPHON

Cette page fait partie de la publication 3.52 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/.

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

Alain Portal <http://manpagesfr.free.fr/> (2006). Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <>.

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