PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : variable global...



mithras
29-11-2002, 20:50
wenn ich eine variable global definiere & initialisere.
z.B. int e = 0;
dann mach ich ein fork.

parent prozess
e++;


child prozess
e++;


ist dann e 1 oder 2 ?

hm hab jetzt wohl festegestellt das e = 1 ist, wie kann ich das machen, dass e = 2 ist, also wenn ich e in chuld prozess veränder, der eltern prozess auf den gleichen wert zugreift!?

The Ripper
30-11-2002, 10:54
Prozesse laufen in getrennten Speicherbereichen ab und haben keinen Zugriff auf die Variablen anderer Prozesse. Über Interprozesskommunikation (IPC) können sie sich aber gegenseitig austauschen, der Childprozess kann dem Parentprozess also mitteilen, dass die Variable e erhöht werden soll.
Erklärt wird das ganze hier (http://su2.info/uni/li/ipc_net_paper/node8.html).

Wesentlich eleganter wäre es, den Childprozess durch einen Thread zu ersetzen. Da Threads im gleichen Speicherbereich ablaufen, können sie sich globale Variablen "teilen".
Nen Link habe ich dazu leider nicht parat, suche einfach mal nach pthreads in Google ;)