Provided by: freebsd-manpages_9.2+1-1_all bug

NAME

       shmctl — shared memory control

LIBRARY

       Standard C Library (libc, -lc)

SYNOPSIS

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

       int
       shmctl(int shmid, int cmd, struct shmid_ds *buf);

DESCRIPTION

       Performs the action specified by cmd on the shared memory segment identified by shmid:

       IPC_STAT     Fetch the segment's struct shmid_ds, storing it in the memory pointed to by buf.

       IPC_SET      Changes  the  shm_perm.uid,  shm_perm.gid, and shm_perm.mode members of the segment's struct
                    shmid_ds to match those of the struct pointed to by buf.  The  calling  process's  effective
                    uid must match either shm_perm.uid or shm_perm.cuid, or it must have superuser privileges.

       IPC_RMID     Removes  the  segment from the system.  The removal will not take effect until all processes
                    having attached the segment have exited; however, once  the  IPC_RMID  operation  has  taken
                    place,  no  further  processes  will be allowed to attach the segment.  For the operation to
                    succeed, the calling process's effective uid must match shm_perm.uid  or  shm_perm.cuid,  or
                    the process must have superuser privileges.

       The shmid_ds structure is defined as follows:

       struct shmid_ds {
           struct ipc_perm shm_perm;   /* operation permission structure */
           size_t          shm_segsz;  /* size of segment in bytes */
           pid_t           shm_lpid;   /* process ID of last shared memory op */
           pid_t           shm_cpid;   /* process ID of creator */
           int             shm_nattch; /* number of current attaches */
           time_t          shm_atime;  /* time of last shmat() */
           time_t          shm_dtime;  /* time of last shmdt() */
           time_t          shm_ctime;  /* time of last change by shmctl() */
       };

RETURN VALUES

       The  shmctl()  function  returns  the  value  0 if successful; otherwise the value -1 is returned and the
       global variable errno is set to indicate the error.

ERRORS

       The shmctl() system call will fail if:

       [EINVAL]           Invalid operation, or no shared memory segment was found corresponding to shmid.

       [EPERM]            The calling process's effective uid does not  match  the  uid  of  the  shared  memory
                          segment's owner or creator.

       [EACCES]           Permission denied due to mismatch between operation and mode of shared memory segment.

SEE ALSO

       shmat(2), shmdt(2), shmget(2), ftok(3)

Debian                                            July 17, 1995                                        SHMCTL(2)