2016-09-06 2 views
0

Also versuche ich den Aufruf von fork() zu lernen, ich bin ehrlich verwirrt darüber, wie dieser Kindprozess und Elternprozess funktioniert. Hier ist ein Teil des Codes:Printf() nach fork() und Bedingung wird nur einmal gedruckt?

int main() 
{ 
    pid_t pid; 

    pid = fork(); 

    if (pid == 0) { 
     value = ChildProcess(value); 
     return 0; 
    } 
    else if (pid > 0) { 
     value = ParentProcess(value); 
    } 

    printf("\nThe value is %d",value); 
    return 0; 
} 

Nun sollte der Ausgang geben mir Eltern Wert und Kind-Wert und da gibt es keine Wartezeit ist() aufrufen, entweder Stammwert oder Abkömmling-Wert kann zuerst gedruckt werden. Aber was ich verwirrt bin, warum wird die printf-Anweisung nur einmal gedruckt ?? Sollte es nicht zweimal gedruckt werden, da der Gabel-Aufruf im Grunde ein dupliziertes Programm erstellt hat?

Antwort

2

Da Sie nach dem Aufrufen von ChildProcess vom untergeordneten Prozess zurückkehren, gehen Sie nicht durch den printf