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
-pthread.
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.
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 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.
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.44 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/>.
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 à
<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> ».