HPlogo HP-UX Reference > S

sem_close(2)

HP-UX 11i Version 2: December 2007 Update
» 

Technical documentation

 » Table of Contents

 » Index

NAME

sem_close() — close a named POSIX semaphore

SYNOPSIS

#include <sys/semaphore.h>

int sem_close(sem_t *sem);

DESCRIPTION

sem_close() is used to close a named semaphore. A successful call to sem_close() will remove the process's descriptor for the semaphore referenced by the specified sem_t structure sem if the semaphore is marked for removal by a call to sem_unlink() and there are no other descriptors referencing this semaphore.

When the process's descriptor for the semaphore referenced by sem is removed, subsequent use of this semaphore by this process will fail. Descriptors for named semaphores are also removed by processes on exit. Calling sem_close() does not affect other processes referencing the same semaphore.

To use this function, link in the realtime library by specifying -lrt on the compiler or linker command line.

RETURN VALUE

If the semaphore was closed and the descriptors referencing it were removed, sem_close() returns 0 to the caller.

If the semaphore could not be closed, the call returns -1 and sets errno to indicate the error.

ERRORS

sem_close() fails and does not perform the requested operation if the following condition is encountered:

EINVAL

The argument sem is not a valid named semaphore.

WARNINGS

A single sem_close() call will make the semaphore unusable by the process no matter how many times that process has called sem_open() for the same semaphore. Subsequent calls to sem_close() by the same process for the same semaphore will result in undefined behavior.

EXAMPLES

The following call to sem_close() will close a named semaphore referred to by sem by removing the process's descriptor to the semaphore and removing the semaphore if it is marked for removal by a previous sem_unlink() and there are no descriptors referencing it.

sem_close(sem);

SEE ALSO

sem_init(2), sem_open(2), sem_unlink(2), <semaphore.h>.

STANDARDS CONFORMANCE

sem_close(): POSIX