*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->FreeBSD man pages -> shmctl (2)              



NAME    [Toc]    [Back]

     shmctl -- shared memory control

LIBRARY    [Toc]    [Back]

     Standard C Library (libc, -lc)

SYNOPSIS    [Toc]    [Back]

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

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

DESCRIPTION    [Toc]    [Back]

     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 */
	 int		 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 */
	 short		 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() */
	 void		*shm_internal; /* sysv stupidity */

RETURN VALUES    [Toc]    [Back]

     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

ERRORS    [Toc]    [Back]

     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    [Toc]    [Back]

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

FreeBSD 5.2.1			 July 17, 1995			 FreeBSD 5.2.1
[ Back ]
 Similar pages
Name OS Title
shmctl IRIX shared memory control operations
shmctl HP-UX shared memory control operations
shmctl NetBSD shared memory control operations
shmctl OpenBSD shared memory control operations
shmctl Tru64 Perform shared memory control operations
shm_open FreeBSD open or create a shared memory object shm_unlink -- remove a shared memory object
shmop HP-UX shared memory operations
shmx Tru64 shared memory exerciser
shmat HP-UX shared memory operations
shmat OpenBSD map/unmap shared memory
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service