![]() |
C Prozess erzeugen
Hi,
ich bräuchte etwas Hilfe, bei der Erzeugung von Prozessen in C unter Linux. Ich habe mich bereits mit der Thematik beschäftigt, jedoch hat es noch nicht ganz Klick gemacht. In einigen Büchern und Webseiten habe ich das allgemeine Schema gefunden(Die Erklärung ist in der Regel bei jeder Quelle identisch... ). Mit fork wird ein Kindprozess erzeugt. Entweder mit einer Switch Anweisung oder mehreren if Abfragen werden dazu Fehler abgefangen. Mir ist bewusst, dass wenn ich einen neuen Prozess erzeuge, eine Kopie erstellt wird. Code:
int pid=fork(); 1. Wenn ich einen Prozess mit fork() erstelle, bekommt dieser dann eine Prozess-ID. Wieso kann dieser dann 0 sein? Hat ein Kind-Prozess etwa keine PID? 2. Wo fängt der Kind-Prozess an und wo hört dieser auf? 3. Ist der Eltern-Prozess der Aufruf meines Programms? 4. Wieso wird selbst bei einer einfachen Schleife, mit welcher ich mehrere Prozesse erzeugen möchte, unendlich viele Prozesse erzeugt? Liegt das daran, dass bei jedem erzeugen eine Kopie von der Schleife gemacht wird und somit unendlich viele Prozesse erstellt werden? Wie kann ich denn dann mit einer Schleife eine kontrolierte Anzahl erstellen? 5. Wie kann ich explizit sagen, dass ein Kind-Prozess beendet wird? 6. Wann kann es zu einem Fehler bei der erstellung eines Prozesses kommen? Das wären erstmal alle Fragen. Wie bereits gesagt ich bitte um konstruktive Hilfe. Vielen Dank. sidous80 |
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Beispiel: Code:
#include <stdio.h> Du erhälst 4 Ausgaben. Der Eltern-Prozess (P0) durchläuft die Schleife 2 mal, und erzeugt damit 2 Kindprozesse (P1 und P2). Die Kind Prozesse erhalten ihre Kopie der Variable i diese ist für P1 i=1 und für P2 i=2. Also durchläuft P1 die Schleife 2 mal und P2 durchläuft die Schleife 1 mal. Jeder Kind-Prozess beginnt direkt nach der fork() anweisung, was im Fall der Schleife i++ ist. P2 erhöht i jetzt von 2 auf 3. Was zum Abbruch der Schleife führt, also werden keine weiteren Prozesse erzeugt. P1 erhäht i von 1 auf 2. Also wird noch ein Prozess (P1-1) erzeugt. Danach wird i von 2 auf 3 erhöht was zum Abbruch der Schleife führt. P1-1 erhöht seine Kopie von i von 2 auf 3 und beendet somit die Schleife. Also haben wir am Ende der Schleife 3 Kind-Prozesse, P1,P2 und P1-1. Zitat:
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.