fork () im C-Programm

8

Dies ist eine Frage aus der letzten GATE Aufnahmeprüfung.
Ein Prozess führt den Code aus

%Vor%

Die Gesamtzahl der untergeordneten Prozesse ist

  

(A) 3. (B) 4. (C) 7. (D) 8.

Meine Antwort war (A) 3.

Meine Ansicht ist, dass nach jedem fork () ein untergeordneter Prozess erstellt wird und die Ausführung des übergeordneten Elements normal fortgesetzt wird.

Unzuverlässige Antwort (ohne jede Erklärung) von Coaching-Instituten waren (C) 7.

Ich denke, sie behandeln, dass jede Verzweigung einen Kindprozess und einen neuen Elternprozess erzeugt. Und sie zählen auch den gesamten Elternprozess. [Ich darf kein Bild posten, aber mein Freund erklärte in einem Diagramm einen Baum, bei dem jeder linke Knoten in zwei Knoten nachgab. Daher 4 Elternknoten im linken und 3 Kindknoten rechts.] Aber die Frage erwähnt eindeutig nur den Kindprozess. Und ich glaube auch nicht, dass der Elternprozess neu in Forking erstellt wird.

Kann jemand bitte einige abweichende Grundlagen erklären, und eine angemessene Lösung für obige Frage bitte.

P.S. Wenn die Programmiersprache einen Unterschied im Forking-Konzept macht, dann sollte dies laut Lehrplan entweder C- oder C ++ - Programm sein.

    
Abhinav Kulshreshtha 15.02.2012, 19:10
quelle

4 Antworten

26

fork() bewirkt, dass sowohl der ursprüngliche Prozess als auch ein untergeordnetes Objekt von diesem Punkt im Code aus gestartet werden . Deshalb hast du dieses Bild:

    
Bernd Elkemann 15.02.2012, 19:16
quelle
15

Ich denke, es gibt insgesamt 8 Prozesse oder 7 Nachkommen des Originals oder 3 direkte Kinder des Originals (die anderen sind Enkel und Urenkel).

  • Nach dem ersten fork() , bei dem keine Fehler (durchgehend) angenommen werden, gibt es zwei Prozesse.
  • Jeder von diesen führt fork() erneut aus - also gibt es jetzt vier Prozesse.
  • Jeder von diesen führt fork() erneut aus - also gibt es jetzt acht Prozesse.
Jonathan Leffler 15.02.2012 19:13
quelle
4

Versuchen Sie Folgendes:

%Vor%     
pmg 15.02.2012 19:18
quelle
3

Nach jedem Aufruf von fork gibt es zwei Prozesse, den Vater und den Sohn. Und beide dieser Prozesse werden unmittelbar nach der Verzweigung weiter ausgeführt. Einige der resultierenden Prozesse sind (nach all dem Gabeln) sowohl Eltern als auch Kinder. Diejenigen, die nur Kinder sind, sind die Blätter des Prozessbaums. Der eine (der ursprüngliche), der nur ein Elternteil ist, ist der Stamm des Baums. Diejenigen, die sowohl Eltern als auch Kinder sind, sind die Zweige .

    
Ben Jackson 15.02.2012 19:14
quelle

Tags und Links