Por que printf () não imprime nada antes de dormir ()?

Estou apenas aprendendo C com o livro de Kernighan e Ritchie; Eu estou no básico do quarto capítulo (funções). Outro dia fiquei curioso sobre osleep() função, então tentei usá-lo assim:

#include <stdio.h>
#include <unistd.h>

int main(void)
{
  printf(" I like cows.");
  sleep(5);
  return 0;
}

O problema é a saída do programa, parece que ele faz osleep() primeiro e depois oprintf(), em outras palavras, aguarda cinco segundos e depois imprime a sequência. Então pensei, talvez o programa chegue asleep() tão rápido que não deixaprintf() fazer o trabalho dele como eu quero, que é imprimir a string e depois dormir.

Como posso mostrar a string e colocar o programa em suspensão? O compilador é o GCC 3.3.5 (propolice) no OpenBSD 4.3.

PS: Eu não sei como você coloca aqui as linhas do pré-processador corretamente.

questionAnswers(4)

yourAnswerToTheQuestion