Estoy aprendiendo C con el libro de Kernighan y Ritchie; Estoy en lo básico del cuarto capítulo (cosas de funciones). El otro día me entró la curiosidad acerca de la función sleep()
, por lo que trató de utilizar de esta manera:¿Por qué printf() no imprime nada antes de dormir()?
#include <stdio.h>
#include <unistd.h>
int main(void)
{
printf(" I like cows.");
sleep(5);
return 0;
}
El problema es la salida del programa, se ve como lo hace el sleep()
primero y luego el printf()
, en otra palabras, espera cinco segundos y luego imprime la cadena. Así que pensé, tal vez el programa llega al sleep()
tan rápido que no deja que printf()
haga su trabajo como yo quiero, es decir, imprimir la cadena y luego dormir.
¿Cómo puedo mostrar la cadena y poner el programa en reposo? El compilador es GCC 3.3.5 (propolic) en OpenBSD 4.3.
PD No sé cómo colocar aquí las líneas del preprocesador correctamente.
printf no es amortiguada , la secuencia a la que está escribiendo es. –
stderr suele estar sin búfer (aunque puede ser una línea amortiguada). –