c process fork atexit

La aserción vfork() atexit falló



process (1)

No está claro lo que intenta hacer o entender, pero aquí hay una cita ligeramente editada del manual :

La función vfork () tiene el mismo efecto que fork (2), excepto que el comportamiento no está definido si el proceso creado por vfork ()

  1. modifica cualquier dato que no sea una variable de tipo pid_t utilizada para almacenar el valor de retorno de vfork ()
  2. regresa de la función en la que se llamaba vfork ()
  3. llama a cualquier otra función antes de llamar con éxito _exit (2) o una de las familias de funciones de exec (3)

Está haciendo tanto 1: i++ como 3 printf("%d/n", i) . Lo que sea que esperas, no funcionará.

Como nota al vfork , vfork no está mal. Simplemente complicado, peligroso, casi inútil y eliminado de SUSv4.

Estoy tratando de entender la siguiente pieza 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 diga que vfork () es malo y este tipo de cosas. Sé que lo es, pero qué está sucediendo exactamente en este código que está causando este tipo de error. Gracias por adelantado