Bonjour,

Voici un petit problème que je n'arrive pas à comprendre avec le comportement de sleep().

Dans le code suivant, les deux tests affichent un texte, puis endort le programme pendant 2 secondes.
La seule différence est le saut de ligne (\n) dans le printf avant la fonction sleep.

Lors de l'execution du premier test, le texte apparait à l'écran qu'APRES le sleep,
tandis que dans le second test, le texte apparait AVANT le sleep.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <unistd.h>

int main(void)
{
  // Premier test
  printf("Ce texte s'affiche APRES le sleep(2)") ;
  sleep(2) ;	// Ici : Le texte s'affiche APRES le sleep
  printf("\n") ;
  printf("Fin du test...\n") ;

  printf("------\n") ;

  // Second test
  printf("Ce texte s'affiche AVANT le sleep(2)\n") ;
  sleep(2) ;	// Ici : Le texte s'affiche AVANT le sleep
  printf("Fin du test...\n") ;

  return 0 ;
}
Si quelqu'un à une explication dans ce comportement, cela serait le bienvenue

Merci.

OS : Linux version 2.4.27-2-386
Compilateur : gcc (GCC) 3.3.5 (Debian 1:3.3.5-13)