Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SEM_OPEN(3)		    Library Functions Manual		   SEM_OPEN(3)

NAME
       sem_open, sem_close, sem_unlink -- named	semaphore operations

LIBRARY
       Standard	C Library (libc, -lc)

SYNOPSIS
       #include	<semaphore.h>

       sem_t *
       sem_open(const char *name, int oflag, ...);

       int
       sem_close(sem_t *sem);

       int
       sem_unlink(const	char *name);

DESCRIPTION
       The  sem_open() function	creates	or opens the named semaphore specified
       by name.	 The returned semaphore	may be used  in	 subsequent  calls  to
       sem_getvalue(3),	   sem_wait(3),	  sem_trywait(3),   sem_post(3),   and
       sem_close().

       This implementation places strict requirements on the value of name: it
       must begin with a slash (`/') and contain no other slash	characters.

       The following bits may be set in	the oflag argument:

       O_CREAT	Create the semaphore if	it does	not already exist.

		The third argument to the call to sem_open() must be  of  type
		mode_t	and  specifies	the  mode for the semaphore.  Only the
		S_IWUSR, S_IWGRP, and S_IWOTH bits are	examined;  it  is  not
		possible  to grant only	"read" permission on a semaphore.  The
		mode is	modified according  to	the  process's	file  creation
		mask; see umask(2).

		The  fourth argument must be an	unsigned int and specifies the
		initial	value for the semaphore, and must be no	 greater  than
		SEM_VALUE_MAX.

       O_EXCL	Create	the  semaphore if it does not exist.  If the semaphore
		already	exists,	sem_open() will	fail.  This  flag  is  ignored
		unless O_CREAT is also specified.

       The  sem_close()	function closes	a named	semaphore that was opened by a
       call to sem_open().

       The sem_unlink()	function removes the semaphore named name.   Resources
       allocated to the	semaphore are only deallocated when all	processes that
       have the	semaphore open close it.

RETURN VALUES
       If  successful,	the  sem_open()	 function  returns  the	address	of the
       opened semaphore.  If the same name argument is given to	multiple calls
       to sem_open() by	the  same  process  without  an	 intervening  call  to
       sem_close(),  the same address is returned each time.  If the semaphore
       cannot be opened, sem_open() returns SEM_FAILED and the global variable
       errno is	set to indicate	the error.

       The sem_close() and sem_unlink()	functions return the value 0  if  suc-
       cessful;	otherwise the value -1 is returned and the global variable er-
       rno is set to indicate the error.

ERRORS
       The sem_open() function will fail if:

       [EACCES]		  The  semaphore  exists and the permissions specified
			  by oflag at the time it was created deny  access  to
			  this process.

       [EACCES]		  The semaphore	does not exist,	but permission to cre-
			  ate it is denied.

       [EEXIST]		  O_CREAT and O_EXCL are set but the semaphore already
			  exists.

       [EINTR]		  The call was interrupted by a	signal.

       [EINVAL]		  The  sem_open()  operation  is not supported for the
			  given	name.

       [EINVAL]		  The value argument is	greater	than SEM_VALUE_MAX.

       [ENAMETOOLONG]	  The name argument is too long.

       [ENFILE]		  The system limit on semaphores has been reached.

       [ENOENT]		  O_CREAT is not set but the named semaphore does  not
			  exist.

       [ENOSPC]		  There	is not enough space to create the semaphore.

       The sem_close() function	will fail if:

       [EINVAL]		  The sem argument is not a valid semaphore.

       The sem_unlink()	function will fail if:

       [EACCES]		  Permission is	denied to unlink the semaphore.

       [ENAMETOOLONG]	  The specified	name is	too long.

       [ENOENT]		  The named semaphore does not exist.

SEE ALSO
       close(2),  open(2),  umask(2), unlink(2), sem_getvalue(3), sem_post(3),
       sem_trywait(3), sem_wait(3)

STANDARDS
       The sem_open(), sem_close(),  and  sem_unlink()	functions  conform  to
       ISO/IEC 9945-1:1996 ("POSIX.1").

HISTORY
       Support for named semaphores first appeared in FreeBSD 5.0.

FreeBSD	13.2			January	9, 2010			   SEM_OPEN(3)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sem_open&sektion=3&manpath=FreeBSD+14.2-RELEASE+and+Ports>

home | help