2012-03-06 20 views
6

Duplicar posible:
Working of fork() in linux gcc¿Por qué este código se imprime dos veces?

#include <stdio.h> 

void main() 
{ 
    printf ("ciao"); 
    fork(); 
} 

tengo algunas ideas acerca de la optimización de C, pero no estoy seguro. Espero que sepas la respuesta.

+4

¿Ha intentado ejecutarlo? – MByD

+2

No estoy seguro de entender la pregunta. Es bastante obvio lo que imprime. Además, main debería devolver un int, y lo que hace la función fork() no está claro :) –

+0

Sí, imprime "ciaociao". Mi pregunta es por qué se imprime esto. – gc5

Respuesta

14

El código probablemente imprimirá "ciao" dos veces como salida estándar se almacena en el búfer IO por lo que el búfer interno para salida estándar se replicará en el proceso secundario y ambos búferes se vacían cuando sale cada proceso, el principal y el secundario.

No está relacionado con la optimización.

4

cuando tenedor() se llama, tanto el proceso como padres e hijos heredan y por lo tanto que ambos se

impresión "Ciao" cuando vaciar el búfer. Si llama a fflush (stdout);

antes de llamar al tenedor se imprimirá solo una vez

Cuestiones relacionadas