2016-04-22 4 views
0

Ich habe eine dumme Frage auf dem Betriebssystem Lehrbuch. Die Frage ist unten:
Angenommen, dass alle Fork-Systemaufrufe erfolgreich sind. Nach Ausführung des unten gezeigten Programms. Wie viele Zeilen sind auf dem Bildschirm?
ich nehme an, dass jeder fork call die Prozesse verdoppelt, also sollte das Ergebnis 16 process erstellt werden. Aber wenn ich denselben Code aus dem Lehrbuch schreibe, habe ich 30 Zeilen. Hier ist das Ergebnis und der Code:
http://imgur.com/zrdOP0XWie viele Prozesse werden nach vier fork() in Linux erstellt?

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main(){ 
    fork(); 
    printf("After fork1\n"); 
    fork(); 
    printf("After fork2\n"); 
    fork(); 
    printf("After fork3\n"); 
    fork(); 
    printf("After fork4\n"); 
} 
+2

Forking Gabeln die Gabeln. –

+0

Was ist 2 + 4 + 8 + 16? – Peter

Antwort

0

das Ergebnis sollte wie folgt sein:

fork1 fork2 fork3 fork4 fork4 fork3 fork4 fork4
fork2 fork3 fork4 fork4 fork3 fork4 fork4 fork1 fork2 fork3 fork4 fork4 fork3 fork4 fork4
fork2 fork3 fork4 fork4 fork3 fork4 fork4

(die Räume sind nur für eine bessere Lesung)

3

Aber wenn ich den gleichen Code aus dem Lehrbuch Typ, ich habe 30 Zeilen

Es ist normal:

  • Nach Gabel 1 hast du 2 Prozesse, also werden 2 Zeilen geschrieben,
  • Nach Gabel 2 hast du h ave 4 Prozess, SO 4 Zeilen geschrieben werden,
  • Nach Gabel 3, Sie 8 Prozess, also 8 Zeilen geschrieben werden,
  • Nach Gabel 4, haben Sie 16 Prozess, so 16 Zeilen geschrieben werden,

2 + 4 + 8 + 16 entspricht 30: Sie haben 30 Zeilen.