Salut à tous,

Je suis confronté à une incompréhension...

Mon problème est surement dû à une méconnaissance de cet appel système, mais sleep(1) ne fonctionne pas lorsqu'il est utilisé dans une boucle (peut importe laquelle : do while, while, for, ...)

Voici le code, certes tout à fait inutile, à la base j'étais en train d'étudier la gestion des tâches d'arrière plan sous Linux et j'ai eu besoin d'écrire un code effectuant une tâche régulière (cela serais dix fois plus rapide à écrire en shell script, je le sais, mais je veux entretenir mon utilisation du C)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
 
#define true 1
 
int main (int argc, char ** argv)
{<div style="margin-left:40px">while(true)
{<div style="margin-left:40px">printf("Zzz");
sleep(1);</div>}</div><div style="margin-left:40px">return 0;</div>}
je m'attendais donc à ce que tant qu'aucun signal n'interrompe le programme, toutes les secondes d'affichent "zzz" puis que le programme soit bloqué et ainsi de suite...

Mais dès que le sleep est dans une structure itérative, l'affichage (le printf) de ne produit plus.

Pour autant, les appels systèmes à sleep() sont correctement effectués (validé avec strace)

Merci de vos lumières