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