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

FreeBSD Manual Pages

  
 
  

home | help
SEMGET(2)		  FreeBSD System Calls Manual		     SEMGET(2)

NAME
     semget -- obtain a	semaphore id

LIBRARY
     Standard C	Library	(libc, -lc)

SYNOPSIS
     #include <sys/types.h>
     #include <sys/ipc.h>
     #include <sys/sem.h>

     int
     semget(key_t key, int nsems, int flag);

DESCRIPTION
     Based on the values of key	and flag, semget() returns the identifier of a
     newly created or previously existing set of semaphores.  The key is anal-
     ogous to a	filename: it provides a	handle that names an IPC object.
     There are three ways to specify a key:

     +o	 IPC_PRIVATE may be specified, in which	case a new IPC object will be
	 created.

     +o	 An integer constant may be specified.	If no IPC object corresponding
	 to key	is specified and the IPC_CREAT bit is set in flag, a new one
	 will be created.

     +o	 The ftok(3) function may be used to generate a	key from a pathname.

     The mode of a newly created IPC object is determined by OR'ing the	fol-
     lowing constants into the flag argument:

     SEM_R	   Read	access for user.

     SEM_A	   Alter access	for user.

     (SEM_R>>3)	   Read	access for group.

     (SEM_A>>3)	   Alter access	for group.

     (SEM_R>>6)	   Read	access for other.

     (SEM_A>>6)	   Alter access	for other.

     If	a new set of semaphores	is being created, nsems	is used	to indicate
     the number	of semaphores the set should contain.  Otherwise, nsems	may be
     specified as 0.

RETURN VALUES
     The semget() system call returns the id of	a semaphore set	if successful;
     otherwise,	-1 is returned and errno is set	to indicate the	error.

ERRORS
     The semget() system call will fail	if:

     [EACCES]		Access permission failure.

     [EEXIST]		IPC_CREAT and IPC_EXCL were specified, and a semaphore
			set corresponding to key already exists.

     [EINVAL]		The number of semaphores requested exceeds the system
			imposed	maximum	per set.

     [EINVAL]		A semaphore set	corresponding to key already exists
			and contains fewer semaphores than nsems.

     [EINVAL]		A semaphore set	corresponding to key does not exist
			and nsems is 0 or negative.

     [ENOSPC]		Insufficiently many semaphores are available.

     [ENOSPC]		The kernel could not allocate a	struct semid_ds.

     [ENOENT]		No semaphore set was found corresponding to key, and
			IPC_CREAT was not specified.

SEE ALSO
     semctl(2),	semop(2), ftok(3)

FreeBSD	11.1		       February	7, 2016			  FreeBSD 11.1

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

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

home | help