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