sem_open(3c) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

sem_open(3c)

sem_open(3C)             Standard C Library Functions             sem_open(3C)

NAME
       sem_open - initialize/open a named semaphore

SYNOPSIS
       #include <semaphore.h>

       sem_t *sem_open(const char *name, int oflag,
            /* unsigned long mode, unsigned int value */ ...);

DESCRIPTION
       The  sem_open() function establishes a connection between a named sema‐
       phore and a process (or LWP or thread). Following a call to  sem_open()
       with semaphore name name, the process may reference the semaphore asso‐
       ciated  with  name using the address returned from the call. This sema‐
       phore may be used in subsequent calls to sem_wait(3C), sem_trywait(3C),
       sem_post(3C), and sem_close(3C). The semaphore remains usable  by  this
       process  until  the  semaphore  is  closed  by  a  successful  call  to
       sem_close(3C), _Exit(2), or one of the exec functions.


       The oflag argument controls whether the semaphore is created or  merely
       accessed  by the call to sem_open(). The following flag bits may be set
       in oflag:

       O_CREAT    This flag is used to create a semaphore if it does  not  al‐
                  ready exist. If O_CREAT is set and the semaphore already ex‐
                  ists,  then  O_CREAT  has  no  effect, except as noted under
                  O_EXCL. Otherwise, sem_open() creates a named semaphore. The
                  O_CREAT flag requires a third and a fourth  argument:  mode,
                  which  is  of  type  mode_t, and value, which is of type un‐
                  signed int. The semaphore is created with an  initial  value
                  of  value. Valid initial values for semaphores are less than
                  or equal to SEM_VALUE_MAX.

                  The user ID of the semaphore is set to the effective user ID
                  of the process; the group ID of the semaphore is  set  to  a
                  system  default group ID or to the effective group ID of the
                  process. The permission bits of the semaphore are set to the
                  value of the mode argument except those set in the file mode
                  creation mask of the process (see umask(2)).  When  bits  in
                  mode  other than the file permission bits are specified, the
                  effect is unspecified.

                  After  the  semaphore  named  name  has  been   created   by
                  sem_open()  with  the O_CREAT flag, other processes can con‐
                  nect to the semaphore by calling sem_open()  with  the  same
                  value of name.


       O_EXCL     If O_EXCL and O_CREAT are set, sem_open() fails if the sema‐
                  phore  name exists. The check for the existence of the sema‐
                  phore and the creation of the semaphore if it does not exist
                  are  atomic  with  respect  to  other  processes   executing
                  sem_open() with O_EXCL and O_CREAT set. If O_EXCL is set and
                  O_CREAT is not set, the effect is undefined.



       If flags other than O_CREAT and O_EXCL are specified in the oflag para‐
       meter, the effect is unspecified.


       The  name  argument points to a string naming a semaphore object. It is
       unspecified whether the name appears in the file system and is  visible
       to  functions  that take pathnames as arguments. The name argument con‐
       forms to the construction rules for a pathname. The first character  of
       name must be a slash (/) character and the remaining characters of name
       cannot  include  any  slash  characters.  For maximum portability, name
       should include no more than 14 characters, but this limit  is  not  en‐
       forced.


       If  a  process  makes  multiple successful calls to sem_open() with the
       same value for name, the same semaphore address is  returned  for  each
       such successful call, provided that there have been no calls to sem_un‐
       link(3C) for this semaphore.


       References to copies of the semaphore produce undefined results.


       The sem_init(3C) function is used with unnamed semaphores.

RETURN VALUES
       Upon  successful  completion,  the  function returns the address of the
       semaphore. Otherwise, it will return a value of SEM_FAILED and set  er‐
       rno  to  indicate  the  error.  The symbol SEM_FAILED is defined in the
       header <semaphore.h>. No successful return from sem_open() will  return
       the value SEM_FAILED.

ERRORS
       If  any of the following conditions occur, the sem_open() function will
       return SEM_FAILED and set errno to the corresponding value:

       EACCES          The named semaphore exists and the  O_RDWR  permissions
                       are  denied,  or the named semaphore does not exist and
                       permission to create the named semaphore is denied.


       EEXIST          O_CREAT and O_EXCL are set and the named semaphore  al‐
                       ready exists.


       EINTR           The sem_open() function was interrupted by a signal.


       EINVAL          The sem_open() operation is not supported for the given
                       name,  or O_CREAT was set in oflag and value is greater
                       than SEM_VALUE_MAX.


       EMFILE          The  number  of  open  semaphore  descriptors  in  this
                       process  exceeds  SEM_NSEMS_MAX,  or the number of open
                       file descriptors in this process exceeds OPEN_MAX.


       ENAMETOOLONG    The length of name string exceeds PATH_MAX, or a  path‐
                       name   component   is   longer   than   NAME_MAX  while
                       _POSIX_NO_TRUNC is in effect.


       ENFILE          Too many semaphores are currently open in the system.


       ENOENT          O_CREAT is not set and the named semaphore does not ex‐
                       ist.


       ENOSPC          There is insufficient space for the creation of the new
                       named semaphore.


       ENOSYS          The sem_open() function is not supported by the system.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE  VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe _ Stan‐
       dardSee standards(7).


SEE ALSO
       exec(2), exit(2), umask(2), sem_close(3C), sem_init(3C),  sem_post(3C),
       sem_unlink(3C), sem_wait(3C), sysconf(3C), attributes(7), standards(7)

Oracle Solaris 11.4               9 Jul 2009                      sem_open(3C)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3