semget - get set of semaphores


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

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


     The semget() function returns the semaphore identifier asso-
     ciated with key.

     A semaphore identifier and associated data structure and set
     containing  nsems  semaphores (see intro(2)) are created for
     key if one of the following is true:

        o  key is equal to IPC_PRIVATE.

        o  key does not already have a semaphore identifier asso-
           ciated with it, and (semflg&IPC_CREAT) is true.

     On creation, the data  structure  associated  with  the  new
     semaphore identifier is initialized as follows:

        o  sem_perm.cuid,   sem_perm.uid,   sem_perm.cgid,    and
           sem_perm.gid  are  set  equal to the effective user ID
           and effective group ID, respectively, of  the  calling

        o  The access permission bits of  sem_perm.mode  are  set
           equal to the access permission bits of semflg.

        o  sem_nsems is set equal to the value of nsems.

        o  sem_otime is set equal to 0 and sem_ctime is set equal
           to the current time.


     Upon   successful   completion,   a   non-negative   integer
     representing  a semaphore identifier is returned. Otherwise,
     -1 is returned and errno is set to indicate the error.


     The semget() function will fail if:

           A semaphore identifier exists for key,  but  operation
           permission  (see  intro(2))  as  specified by the low-
           order 9 bits of semflg would not be granted.

           A  semaphore  identifier  exists  for  key  but   both
           (semflg&IPC_CREAT)   and  (semflg&IPC_EXCL)  are  both

           The nsems argument is either less than or equal  to  0
           or  greater  than the system-imposed limit; or a sema-
           phore identifier exists for key,  but  the  number  of
           semaphores  in the set associated with it is less than
           nsems and nsems is not equal to 0.

           A semaphore identifier does  not  exist  for  key  and
           (semflg&IPC_CREAT) is false.

           A semaphore  identifier  is  to  be  created  but  the
           system-imposed  limit on the maximum number of allowed
           semaphores or semaphore identifiers system-wide  would
           be exceeded.


     When a UFS file system is mounted with logging enabled, file
     system  transactions  that  free blocks from files might not
     actually add those freed blocks to the  file  system's  free
     list  until  some  unspecified  time  in  the  future.  This
     behavior improves file system performance but does not  con-
     form  to the POSIX, Single UNIX Specification, SPARC Confor-
     mance Definition, System  V  Application  Binary  Interface,
     System  V Interface Definition, and X/Open Portability Guide
     Standards, which  require  that  freed  space  be  available
     immediately.  To enable standards conformance regarding file
     deletions or to address the problem of  not  being  able  to
     grow  files  on a relatively full UFS file system even after
     files  have  been  deleted,   disable   UFS   logging   (see


     ipcrm(1),  ipcs(1),  mount_ufs(1M),   intro(2),   semctl(2),
     semop(2), ftok(3C)

Man(1) output converted with man2html