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 ()
- modifica cualquier dato que no sea una variable de tipo pid_t utilizada para almacenar el valor de retorno de vfork ()
- regresa de la función en la que se llamaba vfork ()
- 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