Prozesse mit fork()

R

Renn25

Mitglied
Hallo !

Ich habe hier bei meinem Programm irgendwie ein Verständnisproblem mit diesen ganzen Parent/Child Prozessen.

Hier mal das Programm (in verkürzter Form)

int main ()
{
// lokale Variablen
pid_t pid;

cout <<"Beispiel zum Aufruf von fork()" <<endl;

// einen neuen Prozess erzeugen
fork ();
cout <<"Kind-PID= " <<getpid() <<" Eltern-PID= " <<getppid();
..... }

Das funktioniert auch soweit, nur das ich mit den Ausgaben nicht ganz klar komme.
z.B.
Kind-PID= 6910 Eltern-PID= 6909
Kind-PID= 6909 Eltern-PID= 6350

Welcher von den beiden Kind-Prozessen wurde denn nun eigentlich erzeugt?
Zitat von einer anderen Website: "Der aufrufende Prozess (in meinem Fall 6909) erhält die Prozessnummer des Sohnprozesses als Funktionsergebnis"

Also gehören doch die Prozesse mit der ID 6909 zusammen. Der Eine ist Parent und der andere Child davon. Welche Rolle spielen jetzt noch die ID's 6910 und 6350 ?

Wäre super, wenn ihr mir das erklären könntet.

Danke
Renn
 
die erste ausgabe kommt vom kind-prozess. Es hat die PID 6910 und sein Parent hat die PID 6909.

die zweite ausgabe kommt vom eltern-prozess. Er hat die PID 6909 und sein Parent hat die PID 6350.

von irgendwo muss dein Programm ja gestartet worden sein ;) und das hat die PID 6350.
Wahrscheinlich ist das deine Shell.

Um im Programm herauszufinden, ob du im Eltern- oder im Kind-Prozess bist, kannst du den Rückgabewert von fork() speichern.
Siehe hierzu auch die manpage von fork.

auf bald
oenone
 

Ähnliche Themen

C : Prozesskommunikation

Pipefehler unter Solaris 10 X86

Child Prozess killen

Zurück
Oben