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	13.2		       October 10, 2015			     SHMCTL(2)

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | ERRORS | SEE ALSO

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

home | help