Wallnussfolie
Grünschnabel
Hallo
Bin neu hier im Forum und hoffe dass mein Problem noch nicht in einem anderen Beitrag diskutiert wurde. Ich habe danach gesucht, auch mittels Google, konnte aber keine Antworten finden.
Zuerst kurz etwas zu meinem System, mit dem ich programmiere:
-Intel Core i5 3230M
-Kubuntu 64 Bit, (Linux 3.13.0-39-generic, KDE 4.13.2)
-Compiler: GCC
Nun zu meinem Problem: Ich möchte mittels fork() eine bestimmte Anzahl an Generationen erzeugen, heißt also, wenn man 4 Generationen möchte, dann gibt es einen "Urprozess", dieser hat einen Sohn, dieser wiederum einen Sohn und dieser auch wieder einen (Die Betonung liegt auf "einen"). Die Prozesse sollen sich dann alle schlafen legen und dann sich nacheinander beenden, angefangen bei der höchsten Generation (im Beispiel wäre das also Generation 4).
Ich habe jetzt die letzten 2 Tage vergeblich versucht, das Problem zu lösen, aber jedes mal entstehen eine unendliche Menge an Söhnen, was ich über das Kommando pstree sehen konnte.
Ich hoffe, jemand von euch kann mir bei diesem Problem helfen, ich bedanke mich schonmal im Voraus!
Hier nun der Code:

Zuerst kurz etwas zu meinem System, mit dem ich programmiere:
-Intel Core i5 3230M
-Kubuntu 64 Bit, (Linux 3.13.0-39-generic, KDE 4.13.2)
-Compiler: GCC
Nun zu meinem Problem: Ich möchte mittels fork() eine bestimmte Anzahl an Generationen erzeugen, heißt also, wenn man 4 Generationen möchte, dann gibt es einen "Urprozess", dieser hat einen Sohn, dieser wiederum einen Sohn und dieser auch wieder einen (Die Betonung liegt auf "einen"). Die Prozesse sollen sich dann alle schlafen legen und dann sich nacheinander beenden, angefangen bei der höchsten Generation (im Beispiel wäre das also Generation 4).
Ich habe jetzt die letzten 2 Tage vergeblich versucht, das Problem zu lösen, aber jedes mal entstehen eine unendliche Menge an Söhnen, was ich über das Kommando pstree sehen konnte.
Ich hoffe, jemand von euch kann mir bei diesem Problem helfen, ich bedanke mich schonmal im Voraus!
Hier nun der Code:
C++:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i, returnwert;
for (i = 1; i = 5; i++)
{
returnwert = fork();
if (returnwert != 0)
{
break;
wait();
exit(0);
}
}
sleep(5);
exit(0);
return 0;
}
Zuletzt bearbeitet von einem Moderator: