Zugriff auf Variablen vom Eltern- und Kindprozess aus

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
JoBe
Beiträge: 215
Registriert: 20.06.2003 18:10:01
Wohnort: vorm Rechner
Kontaktdaten:

Zugriff auf Variablen vom Eltern- und Kindprozess aus

Beitrag von JoBe » 27.12.2003 16:09:02

Hallo!
Ich hab noch mal ein Problem:
Der Code sieht vom Prinzip her so aus:

Code: Alles auswählen

int meinevariable = 1;
pid = fork();
switch(pid)
{
case kind: 
while(true) 
{
meinevariable++;
sleep(1);
}

case eltern:
while(true)
{
printf("%d", meinevariable);
sleep(1);
}
}
Das Problem dabei ist, dass sich meinevariable nur für den Kindprozess ändert, für den Elternprozess bleibt sie immer gleich. Wie kann ich vom Kind- und vom Elternprozess auf die gleiche Variable zugreifen?

init 0
Beiträge: 673
Registriert: 21.10.2003 19:40:28

Beitrag von init 0 » 27.12.2003 16:16:56

Hi,

ich habe zwar keine Ahnung was das mit Debian zu tun hat aber dein Prozess wird geforkt! Lies bitte mal nach was das bedeutet. Es ist kein Thread sondern ein eigener Prozess mit eigenem Adressraum.

Benutzeravatar
JoBe
Beiträge: 215
Registriert: 20.06.2003 18:10:01
Wohnort: vorm Rechner
Kontaktdaten:

Beitrag von JoBe » 27.12.2003 16:35:05

Es hat nix mit Debian zu tun, stimmt. Aber das dieser Bereich hier heißt ja auch
Softwareentwicklung und -paketierung, Scripting
Was forken bedeutet, weis ich. Mir ist vor 5 Minuten auch eingefallen, wie ich das Problem löse: mit Pointern. Warum kann mir das nicht gleich einfallen :( und löschen kann ich das auch nicht mehr...

[EDIT] mit Pointern funzt auch nix. Liegt wahrscheinlich am Adressraum. Dann nehm ich eben Threads her.

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 27.12.2003 16:59:35

Das Stichwort was du suchst dürfte Interprozesskomunikation sein [1]. Je nach Aufgabenstellung dürften Semaphoren, Shared Memory oder Pipes etwas für dich sein. Wenn das alles nicht ausreicht, gibts immer noch Sockets.

cu

[1] http://su2.info/uni/li/ipc_net_paper/node2.html

Antworten