Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


semctl(3p) — Linux manual page

PROLOG |NAME |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |EXAMPLES |APPLICATION USAGE |RATIONALE |FUTURE DIRECTIONS |SEE ALSO |COPYRIGHT

SEMCTL(3P)              POSIX Programmer's ManualSEMCTL(3P)

PROLOG        top

       This manual page is part of the POSIX Programmer's Manual.  The       Linux implementation of this interface may differ (consult the       corresponding Linux manual page for details of Linux behavior), or       the interface may not be implemented on Linux.

NAME        top

       semctl — XSI semaphore control operations

SYNOPSIS        top

       #include <sys/sem.h>       int semctl(intsemid, intsemnum, intcmd, ...);

DESCRIPTION        top

       Thesemctl() function operates on XSI semaphores (see the Base       Definitions volume of POSIX.1‐2017,Section 4.17,Semaphore).  It       is unspecified whether this function interoperates with the       realtime interprocess communication facilities defined inSection2.8,Realtime.       Thesemctl() function provides a variety of semaphore control       operations as specified bycmd.  The fourth argument is optional       and depends upon the operation requested. If required, it is of       typeunion semun, which the application shall explicitly declare:           union semun {               int val;               struct semid_ds *buf;               unsigned short  *array;           } arg;       Each operation shall be performed atomically.       The following semaphore control operations as specified bycmd are       executed with respect to the semaphore specified bysemid andsemnum.  The level of permission required for each operation is       shown with each command; seeSection 2.7,XSI InterprocessCommunication.  The symbolic names for the values ofcmd are       defined in the<sys/sem.h> header:       GETVAL      Return the value ofsemval; see<sys/sem.h>.  Requires                   read permission.       SETVAL      Set the value ofsemval toarg.val, wherearg is the                   value of the fourth argument tosemctl().  When this                   command is successfully executed, thesemadj value                   corresponding to the specified semaphore in all                   processes is cleared. Also, thesem_ctime timestamp                   shall be set to the current time, as described inSection 2.7.1,IPC General Description.  Requires                   alter permission; seeSection 2.7,XSI InterprocessCommunication.       GETPID      Return the value ofsempid.  Requires read permission.       GETNCNT     Return the value ofsemncnt.  Requires read                   permission.       GETZCNT     Return the value ofsemzcnt.  Requires read                   permission.       The following values ofcmd operate on eachsemval in the set of       semaphores:       GETALL      Return the value ofsemval for each semaphore in the                   semaphore set and place into the array pointed to byarg.array, wherearg is the fourth argument tosemctl().  Requires read permission.       SETALL      Set the value ofsemval for each semaphore in the                   semaphore set according to the array pointed to byarg.array, wherearg is the fourth argument tosemctl().  When this command is successfully executed,                   thesemadj values corresponding to each specified                   semaphore in all processes are cleared. Also, thesem_ctime timestamp shall be set to the current time,                   as described inSection 2.7.1,IPC GeneralDescription.  Requires alter permission.       The following values ofcmd are also available:       IPC_STAT    Place the current value of each member of thesemid_ds                   data structure associated withsemid into the                   structure pointed to byarg.buf, wherearg is the                   fourth argument tosemctl().  The contents of this                   structure are defined in<sys/sem.h>.  Requires read                   permission.       IPC_SET     Set the value of the following members of thesemid_ds                   data structure associated withsemid to the                   corresponding value found in the structure pointed to                   byarg.buf, wherearg is the fourth argument tosemctl():                       sem_perm.uid                       sem_perm.gid                       sem_perm.mode                   The mode bits specified inSection 2.7.1,IPC GeneralDescription are copied into the corresponding bits of                   thesem_perm.mode associated withsemid.  The stored                   values of any other bits are unspecified. Thesem_ctime timestamp shall be set to the current time,                   as described inSection 2.7.1,IPC GeneralDescription.                   This command can only be executed by a process that                   has an effective user ID equal to either that of a                   process with appropriate privileges or to the value ofsem_perm.cuid orsem_perm.uid in thesemid_dsdata                   structure associated withsemid.       IPC_RMID    Remove the semaphore identifier specified bysemid                   from the system and destroy the set of semaphores andsemid_dsdata structure associated with it. This                   command can only be executed by a process that has an                   effective user ID equal to either that of a process                   with appropriate privileges or to the value ofsem_perm.cuid orsem_perm.uid in thesemid_dsdata                   structure associated withsemid.

RETURN VALUE        top

       If successful, the value returned bysemctl() depends oncmd as       follows:       GETVAL      The value ofsemval.       GETPID      The value ofsempid.       GETNCNT     The value ofsemncnt.       GETZCNT     The value ofsemzcnt.       All others  0.       Otherwise,semctl() shall return -1 and seterrno to indicate the       error.

ERRORS        top

       Thesemctl() function shall fail if:EACCESOperation permission is denied to the calling process; seeSection 2.7,XSI Interprocess Communication.EINVALThe value ofsemid is not a valid semaphore identifier, or              the value ofsemnum is less than 0 or greater than or equal              tosem_nsems, or the value ofcmd is not a valid command.EPERMThe argumentcmd is equal to IPC_RMID or IPC_SET and the              effective user ID of the calling process is not equal to              that of a process with appropriate privileges and it is not              equal to the value ofsem_perm.cuid orsem_perm.uid in the              data structure associated withsemid.ERANGEThe argumentcmd is equal to SETVAL or SETALL and the value              to whichsemval is to be set is greater than the system-              imposed maximum.The following sections are informative.

EXAMPLES        top

       Refer tosemop(3p).

APPLICATION USAGE        top

       The fourth parameter in the SYNOPSIS section is now specified as"..."in order to avoid a clash with the ISO C standard when       referring to the unionsemun (as defined in Issue 3) and for       backwards-compatibility.       The POSIX Realtime Extension defines alternative interfaces for       interprocess communication. Application developers who need to use       IPC should design their applications so that modules using the IPC       routines described inSection 2.7,XSI Interprocess Communication       can be easily modified to use the alternative interfaces.

RATIONALE        top

       None.

FUTURE DIRECTIONS        top

       None.

SEE ALSO        top

Section 2.7,XSI Interprocess Communication,Section 2.8,Realtime,semget(3p),semop(3p),sem_close(3p),sem_destroy(3p),sem_getvalue(3p),sem_init(3p),sem_open(3p),sem_post(3p),sem_trywait(3p),sem_unlink(3p)       The   Base  Definitions  volume  of  POSIX.1‐2017,Section4.17,Semaphore,sys_sem.h(0p)

COPYRIGHT        top

       Portions of this text are reprinted and reproduced  in  electronic       form   from   IEEE   Std  1003.1-2017,  Standard  for  Information       Technology -- Portable Operating  System  Interface  (POSIX),  The       Open  Group  Base  Specifications Issue 7, 2018 Edition, Copyright       (C) 2018 by the Institute of Electrical and Electronics Engineers,       Inc and The Open Group.  In the event of any  discrepancy  between       this  version  and  the original IEEE and The Open Group Standard,       the original IEEE and The  Open  Group  Standard  is  the  referee       document.   The  original  Standard  can  be  obtained  online  athttp://www.opengroup.org/unix/online.html .       Any typographical or formatting errors that appear  in  this  page       are  most  likely to have been introduced during the conversion of       the source files to man page format. To report  such  errors,  seehttps://www.kernel.org/doc/man-pages/reporting_bugs.html .IEEE/The Open Group                2017SEMCTL(3P)

Pages that refer to this page:sys_sem.h(0p)ipcrm(1p)sem_close(3p)sem_destroy(3p)semget(3p)sem_getvalue(3p)semop(3p)sem_open(3p)sem_post(3p)sem_timedwait(3p)sem_trywait(3p)sem_unlink(3p)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp