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

FreeBSD Manual Pages

  
 
  

home | help
SHMCTL(2)		      System Calls Manual		     SHMCTL(2)

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 iden-
       tified 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 ef-
		    fective   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 seg-
		    ment have exited.  For the operation to succeed, the call-
		    ing	process's effective uid	 must  match  shm_perm.uid  or
		    shm_perm.cuid,  or	the process must have superuser	privi-
		    leges.  If the kern.ipc.shm_allow_removed sysctl(3)	 vari-
		    able  is  set  to 0, once the IPC_RMID operation has taken
		    place, no further processes	will be	allowed	to attach  the
		    segment.

       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 cre-
			  ator.

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

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

FreeBSD	14.3		       October 10, 2015			     SHMCTL(2)

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

home | help