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)
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...
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>}
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
Partager