NOM

sem_open - Initialiser et ouvrir un sémaphore nommé

BIBLIOTHÈQUE

Bibliothèque de threads POSIX ( libpthread, -lpthread)

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 *nom, int oflag);
sem_t *sem_open(const char *nom, int oflag,
                mode_t mode, unsigned int valeur);

DESCRIPTION

sem_open() crée un nouveau sémaphore POSIX ou en ouvre un existant. Le sémaphore est identifié par nom. Pour les détails de la construction de nom, 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 nom 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 l'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 valeur spécifie la valeur initiale du nouveau sémaphore. Si O_CREAT est spécifié et que le sémaphore nom existe déjà, mode et valeur 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 nom existe déjà.
EINVAL
valeur était plus grand que SEM_VALUE_MAX.
EINVAL
nom consiste en une barre oblique « / », suivie d'aucun autre caractère.
EMFILE
La limite du nombre de descripteurs de fichiers par processus a été atteinte.
ENAMETOOLONG
nom est trop long.
ENFILE
La limite du nombre total de fichiers ouverts pour le système entier a été atteinte.
ENOENT
L'attribut O_CREAT n'était pas spécifié dans oflag et aucun sémaphore nom n'existe ; ou O_CREAT était spécifié, mais nom n'était pas correctement formé.
ENOMEM
Mémoire insuffisante.

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes(7).
Interface Attribut Valeur
sem_open() Sécurité des threads MT-Safe
 

STANDARDS

POSIX.1-2001, POSIX.1-2008.

VOIR AUSSI

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

TRADUCTION

La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <[email protected]>, Thierry Vignaud <[email protected]>, François Micaux, Alain Portal <[email protected]>, Jean-Philippe Guérard <[email protected]>, Jean-Luc Coulon (f5ibh) <[email protected]>, Julien Cristau <[email protected]>, Thomas Huriaux <[email protected]>, Nicolas François <[email protected]>, Florentin Duneau <[email protected]>, Simon Paillard <[email protected]>, Denis Barbier <[email protected]>, David Prévot <[email protected]> et Thomas Vincent <[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à [email protected]

Recommended readings

Pages related to sem_open you should read also: