Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Probleme fonction sleep
Envoyé par: KRequiem

Bonjour, je fais un programme en C, mais j'ai un probleme avec la fonction sleep sous linux.
Voici une partie de mon code :

printf("Login : " );
scanf("%c",&texte);
printf("Password : " );
for(i=0;i<=9;i++)
{
sleep(1);
printf("*" );
}

printf("\n" );

Il compile bien, mais le souci c'est que dès que j'entre quelque chose pour login, il se passe environ 10s, puis d'un coup password et les etoiles s'affichent, alors que je voudrai que "Password" s'affiche, et que les etoiles apparaissent une a une, et je ne comprend pas pourquoi il "stocke" tout et affiche tout d'un coup. J'ai essayer avec un do while et j'ai la meme chose. Est-ce du au fait que je n'ai pas windows.h ??

Merci.

Poste le Friday 13 April 2007 02:01:12
Répondre     Citer    
Re: Probleme fonction sleep
Envoyé par: oudoubah

Regarde du côté de la fonction flush.
Je pense que tout ce passe bien, mais qu'il faille justement flusher le buffer pour qu'il y ait affichage.


Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Poste le Friday 13 April 2007 07:59:22
Répondre     Citer    
Re: Probleme fonction sleep
Envoyé par: KRequiem

Merci, j'ai essayer fflush(stdin) mais ca ne change rien, peut etre n'est ce pas le bon buffer. Aurais-tu des precisions stp.

Poste le Friday 13 April 2007 12:40:35
Répondre     Citer    
Re: Probleme fonction sleep
Envoyé par: KRequiem

Desole, je ne trouve pas le bouton edité, mais j'ai reussi a resoudre mon probleme, pour info c'etait : fflush(stdout) qu'il fallait rajouter apres les printf.
Merci beaucoup.

Poste le Friday 13 April 2007 12:45:50
Répondre     Citer    
Re: Probleme fonction sleep
Envoyé par: KRequiem

Humm j'ai un autre souci, je n'arrive pas a faire un sleep de moins de 1s. J'ai ete voir le man de sleep, ils disent qu'on peut utiliser la seconde, la minute, l'heure ou le jour, mais pas la milliseconde. J'ai tester msleep mais a la compilation il ne connait pas cette fonction. J'ai essayer de passer des 0.1 ou 0,1 ou meme 1/10 dans la fonction sleep, mais dans ce cas la tout se passe comme si sleep n'etait pas la, tout s'affiche d'un coup. Je programme en C, donc si quelqu'un a une idee.
Merci.

Poste le Friday 13 April 2007 13:08:12
Répondre     Citer    
Re: Probleme fonction sleep
Envoyé par: Fanch

La façon la plus propre & précise de faire dormir un processus, c'est d'utiliser select : ça n'est pas son utilisation initiale mais c'est le plus fiable.

struct timeval tv ;
tv.tv_sec = 0 ;
tv.tv_usec = 500000 ;
/* faire ronquer le process pendant 500ms */
select(0, NULL, NULL, NULL, &tv) ;

hop ! et en plus c'est hyper portable !

un man select te donnera les headers dont tu as besoin.

------- <br />
La meilleure façon de prédire le futur, c'est de l'inventer ~ Alan Kay

Poste le Friday 13 April 2007 13:33:43
Répondre     Citer    
Re: Probleme fonction sleep
Envoyé par: KRequiem

Merci encore une fois, je vais essayer ca.

Poste le Friday 13 April 2007 14:49:01
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Probleme fonction sleep
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons