Estaba experimentando con fork()
y la reorientación para verificar si las nuevas direcciones hechas en la matriz también se aplican al niño. Escribí el siguiente programa sencilloDeclaración antes de la impresión de la horquilla() dos veces
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int main()
{
freopen("error.txt", "w+t", stdout); // From now on, stdout = error.txt
printf (" ERROR! WHY DONT U UNDERSTAND?\n");
if (fork() == 0)
{
printf(" I AM CHILD\n");
exit(0);
}
else-
{
printf (" EITHER I AM A PARENT OR SOMETHING GOT SCREWED\n");
}
return 0;
}
La salida (error.txt
) Tengo es
ERROR! WHY DONT U UNDERSTAND?
EITHER I AM A PARENT OR SOMETHING GOT SCREWED
ERROR! WHY DONT U UNDERSTAND?
I AM CHILD
Sorprendentemente, ERROR! WHY DONT U UNDERSTAND?
es impresión doble a pesar de que aparece mucho antes de que el fork()
se llama y debe solo se imprimirá una vez por el padre.
¿Alguien puede arrojar algo de luz sobre esto?
No estoy seguro acerca de esto, pero asegúrese de enjuagar io-buffers, antes de la bifurcación. tal vez los buffers se copian al niño. – lupz
¡Esto sería una excelente pregunta para la entrevista! – dasblinkenlight