Comment fork ()?

Im vraiment nouveau à la fourche, ce qui est le pid faire dans ce code? Quelqu'un peut-il expliquer ce qui arrive à la ligne X et la ligne de Y ?

#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#define SIZE 5
int nums[SIZE] = {0,1,2,3,4};
int main()
{
    int i;
    pid_t pid;
    pid = fork();
    if (pid == 0) {
        for (i = 0; i < SIZE; i++) {
            nums[i] *= -i;
            printf("CHILD: %d ",nums[i]); /* LINE X */
        }
    }
    else if (pid > 0) {
        wait(NULL);
        for (i = 0; i < SIZE; i++)
            printf("PARENT: %d ",nums[i]); /* LINE Y */
    }
    return 0;
}
Avez-vous essayé en fait de la compilation et de l'exécution? Que PENSEZ-vous qui va arriver?
Vous pouvez prendre un coup d'oeil ici: ideone.com/DasYqa
l'homme à la fourche
Assurez-vous de mettre des retours à la ligne à la fin de la printf() états; sinon, rien n'est garanti à apparaître. Vous devriez #include <sys/wait.h> de déclarer wait(); vous n'avez probablement pas besoin de #include <sys/types.h> explicitement.
ideone.com/dNpNSD

OriginalL'auteur PhoonOne | 2013-02-27