shmop_open() can create or open
a shared memory block.
shmop_open() takes 4 parameters:
key, which is the system's id for the shared memory block,
this parameter can be passed as a decimal or hex. The second
parameter are the flags that you can use:
"a" for access (sets SHM_RDONLY for shmat) use this
flag when you need to open an existing shared memory
segment for read only
"c" for create (sets IPC_CREATE) use this flag when
you need to create a new shared memory segment or if a
segment with the same key exists, try to open it for read
and write
"w" for read write access use this flag when
you need to read and write to a shared memory segment,
use this flag in most cases.
"n" create a new memory segment (sets
IPC_CREATE|IPC_EXCL) use this flag when you want to
create a new shared memory segment but if one already
exists with the same flag, fail. This is useful for
security purposes, using this you can prevent race
condition exploits.
注: Note: the 3rd and 4th should be entered as 0 if you are opening an existing memory segment. On success shmop_open() will return an id that you can use to access the shared memory segment you've created.
This example opened a shared memory block with a system
id of 0x0fff.