Allocating shared memory

shmget() system call is invoked by a process to get an IPC identifier for a shared memory region; if the region does not exists, it creates one:

int shmget(key_t key, size_t size, int shmflg);

This function returns the identifier of the shared memory segment corresponding to the value contained in the key parameter. If other processes intend to use an existing segment, they can use the segment's key value when looking for its identifier. A new segment is however created if the key parameter is unique or has the value IPC_PRIVATE.
size indicates the number of bytes that needs to be allocated, as segments are allocated as memory pages. The number of pages to be allocated is obtained by rounding off the size value to the nearest multiple of a page size.
The shmflg flag specifies how the segment needs to be created. It can contain two values:

  • IPC_CREATE: This indicates creating a new segment. If this flag is unused, the segment associated with the key value is found, and if the user has the access permissions, the segment's identifier is returned.
  • IPC_EXCL: This flag is always used with IPC_CREAT, to ensure that the call fails if the key value exists.
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.145.63.136