vfork () la afirmación atexit falló

Estoy tratando de entender el siguiente fragmento de código

#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>

int main()
{
pid_t pid ;
unsigned int i=0;
pid=vfork();
switch(pid)
{
    case -1: // some sort of error
        puts("fork error");
        break;
    case 0: // the child process 
        while(i<100)
        {
            printf("%d\n", i);
            i++;
        }
        break;
    default: //parent
        while(i<1000)
        {
            printf("%d\n", i);
            i++;
        }
        break;
}
//  _exit(0);
}

Y, por favor, no me digas que vfork () es malo y este tipo de cosas. Lo sé, pero lo que está sucediendo exactamente en este código que está causando este tipo de error. Gracias por adelantad

Respuestas a la pregunta(1)

Su respuesta a la pregunta