Beschreibung
int
shmop_open
( int key, string flags, int mode, int size)
shmop_open(
)
Kann
einen
gemeinsamen
Speicherbereich
erstellen
oder
öffnen
.
shmop_open(
)
benötigt
4
Parameter
:
key
,
die
System-ID
des
gemeinsam
genutzten
Speicherblocks
,
dieser
Parameter
kann
als
Dezimal
-
oder
Hexadezimalzahl
übergeben
werden
.
Der
zweite
Parameter
bezeichnet
die
Flags
,
die
man
benutzen
kann
:
-
"
a
"
zum
Zugriff
(access
)
auf
einen
gemeinsamen
Speicherblock
(setzt
SHM_RDONLY
für
shmat
)
.
Benutzen
Sie
dieses
Flag
,
wenn
Sie
einen
bestehenden
gemeinsamen
Speicherblock
zum
Lesen
öffnen
wollen
.
-
"
c
"
zum
Erstellen
(create
)
eines
gemeinsamen
Speicherblocks
(setzt
IPC_CREATE
)
.
Benutzen
Sie
dieses
Flag
,
wenn
Sie
einen
neuen
gemeinsamen
Speicherblock
erstellen
wollen
oder
,
falls
bereits
ein
Segment
mit
derselben
ID
existiert
,
zum
Öffnen
dieses
Segments
für
Lese
-
und
Schreibzugriffe
.
-
"
w
"
für
Lese
-
und
Schreibzugriffe
.
Benutzen
Sie
dieses
Flag
wenn
Sie
in
einen
gemeinsamen
Speicherbereich
schreiben
oder
daraus
lesen
müssen
.
Das
wird
meistens
der
Fall
sein
.
-
"
n
"
zum
Erzeugen
eines
neuen
gemeinsamen
Speichersegments
(setzt
IPC_CREATE|IPC_EXCL
)
.
Benutzen
Sie
dieses
Flag
,
wenn
Sie
ein
neues
gemeinsames
Speichersegment
erzeugen
wollen
.
Falls
schon
ein
Segment
mit
diesem
Flag
existiert
,
schlägt
die
Funktion
fehl
.
Dies
ist
aus
Sicherheitsgründen
nützlich
,
denn
damit
können
Sie
Sicherheitslöcher
vermeiden
.
Der dritte Parameter ist der Modus, der die Zugriffsrechte, die
Sie dem gemeinsamen Speicher zuweisen wollen, angibt. Das sind
dieselben Zugriffsrechte wie für Dateien. Zugriffsrechte müssen
oktal angegeben werden, z.B. 0644. Der letzte Parameter gibt die
Grösse des gemeinsamen Speichers, den Sie erstellen wollen, in
Byte, an.
Anmerkung
:
Beachten
Sie
:
Der
dritte
und
vierte
Parameter
muss
als
0
angegeben
werden
,
wenn
Sie
ein
existierendes
gemeinsames
Speichersegment
öffnen
wollen
.
Bei
Erfolg
liefert
die
Funktion
shmop_open(
)
eine
ID
zurück
,
die
Sie
zum
Zugriff
auf
den
erstellten
gemeinsamen
Speicher
benutzen
können
.
Beispiel
1
.
Einen
neuen
gemeinsamen
Speicherblock
erstellen
?php
$shm_id
=
shmop_open(
0x0fff
,
"c"
,
0644
,
100)
;
?
|
|
In
diesem
Beispiel
wurde
ein
gemeinsamer
Speicherblock
mit
der
System-ID
0x0fff
erstellt
.