Loading

NOM

       sem_open - Initialiser et ouvrir un sémaphore nommé

SYNOPSIS

       #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 -lrt ou -pthread.

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

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.

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

CONFORMITÉ

       POSIX.1-2001.

VOIR AUSSI

       sem_close(3), sem_getvalue(3), sem_post(3), sem_unlink(3), sem_wait(3),
       sem_overview(7)

COLOPHON

       Cette  page  fait  partie  de  la  publication 3.23 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

       Cette page de manuel a  été  traduite  par  Alain  Portal  <aportal  AT
       univ-montp2   DOT   fr>   en   2006,   et   mise   à   disposition  sur
       http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement         gérées         par         Nicolas         François
       <nicolas.francois@centraliens.net>   et   l’équipe    francophone    de
       traduction de Debian.

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