IceWalkers.com - Linux Software downloads and news
Name : Password :
Linux SoftwareLinux RPMLinux HowtosLink UsAboutAdvertise

shmget (2)

SHMGET(2)                  Linux Programmer's Manual                 SHMGET(2)



NAME
       shmget - allocates a shared memory segment

SYNOPSIS
       #include<sys/ipc.h>

       #include<sys/shm.h>

       intshmget(key_t key,int size,int shmflg);

DESCRIPTION
       shmget() returns the identifier of the shared memory segment associated
       with the value of the argument key.  A new shared memory segment,  with
       size  equal to the value of size rounded up to a multiple of PAGE_SIZE,
       is created if key has the value IPC_PRIVATE or key  isn't  IPC_PRIVATE,
       no  shared memory segment corresponding to key exists, and IPC_CREAT is
       asserted in shmflg (i.e.  shmflg&IPC_CREAT isn't zero).

       The value shmflg is composed of:

       IPC_CREAT   to create a new segment. If this flag  is  not  used,  then
                   shmget()  will  find  the  segment  associated with key and
                   check to see if the user has permission to access the  seg-
                   ment.

       IPC_EXCL    used  with  IPC_CREAT  to  ensure  failure  if  the segment
                   already exists.

       mode_flags(lowest9bits)
                   specifying the permissions granted to the owner, group, and
                   world.   Presently, the execute permissions are not used by
                   the system.

       If a new segment is created, the access  permissions  from  shmflg  are
       copied  into the shm_perm member of the shmid_ds structure that defines
       the segment.  The shmid_ds structure has the following form:

            struct shmid_ds {
                struct ipc_perm shm_perm;    /* operation perms */
                int             shm_segsz;   /* size of segment (bytes) */
                time_t          shm_atime;   /* last attach time */
                time_t          shm_dtime;   /* last detach time */
                time_t          shm_ctime;   /* last change time */
                unsigned short  shm_cpid;    /* pid of creator */
                unsigned short  shm_lpid;    /* pid of last operator */
                short           shm_nattch;  /* no. of current attaches */
            };

            struct ipc_perm {
                key_t  key;
                ushort uid;   /* owner euid and egid */
                ushort gid;
                ushort cuid;  /* creator euid and egid */
                ushort cgid;
                ushort mode;  /* lower 9 bits of shmflg */
                ushort seq;   /* sequence number */
            };

       When creating a new shared memory segment, the system call  initializes
       the shmid_ds data structure shmid_ds as follows:

              shm_perm.cuid  and shm_perm.uid are set to the effective user-ID
              of the calling process.

              shm_perm.cgid and shm_perm.gid are set to the effective group-ID
              of the calling process.

              The  lowest  order 9 bits of shm_perm.mode are set to the lowest
              order 9 bit of shmflg.

              shm_segsz is set to the value of size.

              shm_lpid, shm_nattch, shm_atime and shm_dtime are set to 0.

              shm_ctime is set to the current time.

       If the shared memory segment already exists, the access permissions are
       verified, and a check is made to see if it is marked for destruction.


SYSTEMCALLS
       fork() After  a  fork()  the  child inherits the attached shared memory
              segments.

       exec() After an exec() all attached shared memory segments are detached
              (not destroyed).

       exit() Upon  exit()  all  attached  shared memory segments are detached
              (not destroyed).


RETURNVALUE
       A valid segment identifier, shmid, is returned on success, -1 on error.

ERRORS
       On failure, errno is set to one of the following:

       EINVAL      if  a  new  segment  was to be created and size < SHMMIN or
                   size > SHMMAX, or no new segment was to be created, a  seg-
                   ment  with  given key existed, but size is greater than the
                   size of that segment.

       EEXIST      if IPC_CREAT|IPC_EXCL  was  specified  and  the  segment
                   exists.

       ENOSPC      if all possible shared memory id's have been taken (SHMMNI)
                   or if allocating a segment  of  the  requested  size  would
                   cause  the system to exceed the system-wide limit on shared
                   memory (SHMALL).

       ENOENT      if no segment exists for the given key, and  IPC_CREAT  was
                   not specified.

       EACCES      if  the  user does not have permission to access the shared
                   memory segment.

       ENOMEM      if no memory could be allocated for segment overhead.

NOTES
       IPC_PRIVATE isn't a flag field but a key_t type.  If this special value
       is  used  for  key,  the  system call ignores everything but the lowest
       order 9 bits of shmflg and creates a new shared memory segment (on suc-
       cess).

       The  followings are limits on shared memory segment resources affecting
       a shmget call:

       SHMALL     System wide maximum of shared memory  pages:  policy  depen-
                  dent.

       SHMMAX     Maximum size in bytes for a shared memory segment: implemen-
                  tation dependent (currently 4M).

       SHMMIN     Minimum size in bytes for a shared memory segment: implemen-
                  tation  dependent (currently 1 byte, though PAGE_SIZE is the
                  effective minimum size).

       SHMMNI     System wide maximum number of shared memory segments: imple-
                  mentation  dependent  (currently  4096, was 128 before Linux
                  2.3.99).

       The implementation has no specific limits for the per  process  maximum
       number of shared memory segments (SHMSEG).

BUGS
       The name choice IPC_PRIVATE was perhaps unfortunate, IPC_NEW would more
       clearly show its function.

CONFORMINGTO
       SVr4, SVID.  SVr4  documents  an  additional  error  condition  EEXIST.
       Until  version 2.3.30 Linux would return EIDRM for a shmget on a shared
       memory segment scheduled for deletion.

SEEALSO
       ftok(3), ipc(5), shmctl(2), shmat(2), shmdt(2)



Linux 0.99.11                     1993-11-28                         SHMGET(2)

_Exitgetsockoptoutwshmat
_exitgettidoutw_pshmctl
_llseekgettimeofdaypauseshmdt
_newselectgetuidpersonalityshmget
_sysctlgttypipeshmop
acceptidlepivot_rootshutdown
accessinbpollsigaction
acctinb_pprctlsigaltstack
adjtimexinlpreadsigblock
afs_syscallinl_pprofsiggetmask
alarminsbpselectsigmask
alloc_hugepagesinslptracesignal
arch_prctlinswpwritesigpause
bdflushintroquotactlsigpending
bindinwreadsigprocmask
breakinw_preaddirsigqueue
brkioctlreadlinksigreturn
cacheflushioctl_listreadvsigsetmask
capgetiopermrebootsigsuspend
capsetioplrecvsigtimedwait
chdiripcrecvfromsigvec
chmodkillrecvmsgsigwaitinfo
chownkillpgrenamesocket
chrootlchownrmdirsocketcall
clonelinksbrksocketpair
closelistensched_get_priority_maxssetmask
connectllseeksched_get_priority_minstat
creatlocksched_getaffinitystatfs
duplseeksched_getparamstime
dup2lstatsched_getschedulerstty
execvemadvisesched_rr_get_intervalswapoff
exitmincoresched_setaffinityswapon
fchdirmkdirsched_setparamsymlink
fchmodmknodsched_setschedulersync
fchownmlocksched_yieldsyscall
fcntlmlockallselectsyscalls
fdatasyncmmapselect_tutsysctl
flockmmap2semctlsysfs
forkmodify_ldtsemgetsysinfo
free_hugepagesmountsemopsyslog
fstatmprotectsendtime
fstatfsmpxsendfiletimes
fsyncmremapsendmsgtkill
ftruncatemsgctlsendtotruncate
futexmsggetsetcontextumask
getcontextmsgopsetdomainnameumount
getdentsmsgrcvsetegidumount2
getdomainnamemsgsndseteuiduname
getdtablesizemsyncsetfsgidundocumented
getegidmunlocksetfsuidunimplemented
geteuidmunlockallsetgidunlink
getgidmunmapsetgroupsuselib
getgroupsnanosleepsethostidustat
gethostidnfsservctlsethostnameutime
gethostnamenicesetitimerutimes
getitimerobsoletesetpgidvfork
getpagesizeoldfstatsetpgrpvhangup
getpeernameoldlstatsetpriorityvm86
getpgidoldoldunamesetregidwait
getpgrpoldstatsetresgidwait3
getpidoldunamesetresuidwait4
getppidopensetreuidwaitpid
getpriorityoutbsetrlimitwrite
getresgidoutb_psetsidwritev
getresuidoutlsetsockopt 
getrlimitoutl_psettimeofday 
getrusageoutsbsetuid 
getsidoutslsetup 


The Gimp 2.6.3
GNU Image Manipulation Program
Linux Kernel 2.6 2.6.27.7
Linux Kernel
Battle for Wesnoth 1.4.6
Fantasy Turn-Based Strategy Game
DeleGate 9.9.0-pre8
Proxy server which runs on multiple platforms
Safesquid proxy server 4.2.2.RC8.14B
Antivirus and content filtering proxy server
Thunderbird 2.0.0.18
An email and newsgroup client with powerful, new junk mail controls
Wine 1.1.9
Free implementation of Windows on Unix
WebGUI 7.5.34
A fully featured content management system.
KOffice 2.0 beta3
Integrated office suite for KDE
LimeWire 4.18.8
Gnutella Client
Free IT Magazines, White Papers, eBooks, and more !
Oracle Magazine

Contains technology strategy articles, sample code, tips, Oracle and partner news, how to articles for developers and DBAs, and more.

eWeek

The essential technology information source for builders of e-business.

BusinessWeek (Digital Edition)

Provides readers a deeper understanding of the trends that drive growth, and what best practices keep them ahead of the competition.

Linux Software Map
Find Linux RPM
Best Rated Linux Software
Most Rated Linux Software
Linux Distributions
Linux Howtos
Quick Survey

Please take our survey and help us improve our website to serve you better.

Thank you.
Linux Software
Linux / IT Resources
Site Resources
Google
Privacy Policy
Contact Us
Submit Software
Advertising info