Wertigkeit eines Members innerhalb und außerhalb fork

09/08/2013 - 15:42 von Heinz-Mario Frühbeis | Report spam
Gegeben sei eine Klasse X, die ein Member "void* voidPtr" enthàlt.
Und eine dyn. Lib LIB.
voidPtr ist zunàchst NULL.
LIB forke ich, wird also in einem eigenen Prozess per dlopen geöffnet.
Das Ergebnis von dlopen fließt in voidPtr ein.

Wenn ich nun innerhalb des "Child-Teils" von fork voidPtr ausgeben
lasse, dann kommt so was: 0x16f4890
Zum Programmabschluss frage ich per id = wait(NULL) ab, ob alle Prozesse
beendet sind.
Danach habe ich Klasse X wieder nach voidPtr abgefragt und dort kommt
als Ausgabe 0.

Meine Frage:
Wieso ist voidPtr innerhalb fork quasi wertig und außerhalb nicht?

H-MF
 

Lesen sie die antworten

#1 Markus Raab
09/08/2013 - 15:51 | Warnen spam
Hallo!

Heinz-Mario Frühbeis wrote:
Gegeben sei eine Klasse X, die ein Member "void* voidPtr" enthàlt.
Und eine dyn. Lib LIB.
voidPtr ist zunàchst NULL.
LIB forke ich, wird also in einem eigenen Prozess per dlopen geöffnet.
Das Ergebnis von dlopen fließt in voidPtr ein.

Wenn ich nun innerhalb des "Child-Teils" von fork voidPtr ausgeben
lasse, dann kommt so was: 0x16f4890
Zum Programmabschluss frage ich per id = wait(NULL) ab, ob alle Prozesse
beendet sind.
Danach habe ich Klasse X wieder nach voidPtr abgefragt und dort kommt
als Ausgabe 0.

Meine Frage:
Wieso ist voidPtr innerhalb fork quasi wertig und außerhalb nicht?



voidPtr ist doch in beiden Prozessen eine komplett andere Variable die sich
gegenseitig nicht beeinflussen. Du forkst ja, und machst nicht nur einen
neuen Thread, welche sich den Heap teilen würden.

mfg Markus

Ähnliche fragen