Linux

CentOS 5.3

sem_open(3)


SEM_OPEN

NOM

sem_open − Initialiser et ouvrir un sémaphore nommé.

SYNOPSIS

#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);

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, voir sem_overview(7).

L’argument oflag spécifie les attributs qui contrôlent la manière d’opérer de l’appel. 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). 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

EACCESS

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.

EMFILE

Le processus a déjà le nombre maximum de fichiers ouverts.

ENAMETOOLONG

name était trop long.

ENFILE

La limite système sur le nombre total de fichiers ouverts 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.

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)

TRADUCTION

Ce document est une traduction réalisée par Alain Portal <aportal AT univ-montp2 DOT fr> le 29 juillet 2006.

L’équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=en man 3 sem_open ». N’hésitez pas à signaler à l’auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.


sem_open(3)