Newsgroup: it.comp.lang.c
Titolo: [REQ]Problema con pause,sleep,usleep...

Ho fatto il seguente programma per iniziare a "ragionare" un po' in C.
Dovrebbe stamparmi tutti i numeri da 0 a 99 ad intervalli di un decimo
di secondo.
Invece è come se la pausa non venga assolutamente "vista". Mi spiego meglio:
non faccio neanche in tempo a vedere la schermata dos che già sono di nuovo
nell'ambiente di sviluppo C.
p.s: il mio sistema operativo è Windows XP.
Questo qua sotto è il programma:
grazie
----------------------------
#include <stdio.h>
#include <unistd.h>
int main(void){
           int x;
           int y;
           for (x=0;x<100;x++)
           {
               printf("",x);
               int pause(100);
               }
    }

                int pause(100);
man pause
NAME
       pause - wait for signal
SYNOPSIS
       #include <unistd.h>
       int pause(void);
DESCRIPTION
The  pause library function causes the invoking process (or thread) to sleep
until a signal is received that either terminates it or causes it to call  a
signal-catching function.
la funzione pause mi sembra che non ci incastri nulla con quello che
vuoi fare.
Secondo me le strade sono 3
1) usi la funzione clock() definita in time.h. Non e' l'ideale per vari motivi
che ti saranno chiari leggendo la documentazione.
2) usi la funzione gettimeofday() definita in  #include <sys/time.h>,
se e' disponibile sul tuo sistema.
3) usi una funzione apposita definita per windows che si appoggia alle
funzionalita' fornite windows (che non conosco minimamente).
Probabilmente e' la soluzione migliore, ma non e' standard, e ti conviene
rivolgerti al gruppo che si occupa di programmazione sotto Windows.
ciao,
g.

 p.s: il mio sistema operativo è Windows XP.
Allora ho provato ad utilizzare la funziona "nanosleep", che mi è stata 
consigliata qui sull'ng. Ad esempio potresti utilizzarla così:
/*struct timespec
{
	time_t tv_sec;
	long tv_nsec;
};
int nanosleep(const struct timespec *req, struct timespec *rem);*/
#include <time.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct timespec mytime;
int main()
{
     mytime mtt, mtt2;
     int i = 0;
     mtt.tv_sec = 0;
     mtt.tv_nsec = 100000000;
     for(i = 0;i < 100; i++){
           printf("%d\n", i);
           nanosleep(&mtt, &mtt2);
     }
     return 0;
}
Questo codice sotto Linux (FC4) funziona perfettamente, sotto Win Xp 
no...e sinceramente non mi spiego il motivo, magari qualcuno qui 
potrebbe spiegarmelo gentilmente ;)

[...]sinceramente non mi spiego il motivo
Sotto Windows utilizza Sleep/SleepEx.

 Sotto Windows utilizza Sleep/SleepEx.
Ah ok ottimo! Ora tutto torna (naturalmente va inclusa la libreria 
<windows.h>), ho provato cosě č va benissimo:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main()
{
     int i = 0;
     for(i = 0;i < 20; i++){
           printf("%d\n", i);
           sleep(1000);
     }
     system("pause");
     return 0;
}

           sleep(1000);
Sleep(), non sleep()

 Sleep(), non sleep()
Uhm...funziona uguale sia con Sleep che con sleep...forse fanno 
riferimento a due librerie differenti?

riferimento a due librerie differenti?
Secondo te ? 

 Secondo te ? 
Si, è cosi ;)