PDA

Visualizza la versione completa : Timeout nell'esecuzione di un programma (C)


alienone
20-03-2008, 15:32
Mi servirebbe sapere come rallentare con una sorta di timeout il programma in C, ad un certo punto si deve fermare e aspettare un secondo e poi continuare l'esecuzione.
Sono sotto ambiente linux, grazie.

menphisx
20-03-2008, 16:37
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void delay(int seconds);

int main(void){

int i;

for(i = 1; i <= 60; i++){

printf("%d\n", i);
delay(1);

}

return EXIT_SUCCESS;

}

void delay(int seconds){

clock_t start = clock();

for( ; (clock() - start) <= seconds * CLOCKS_PER_SEC; );

}



funge ?

:ciauz:

alienone
20-03-2008, 19:23
decisamente non funziona :mame:
Alcune cose sono veramente da spiegare...
com'è scritto il ciclo for???
Ma alcune variabili te le hai inventate?? Da dove viene CLOCKS_PER_SEC ??

alienone
20-03-2008, 19:36
Non esiste una funzione già esistente compresa in qualche libreria standard?

oregon
20-03-2008, 19:39
Originariamente inviato da alienone
com'è scritto il ciclo for???

Cosa non capisci?



Ma alcune variabili te le hai inventate?? Da dove viene CLOCKS_PER_SEC ??

Non sono variabili ma costanti e non sono inventate ma sono dichiarate negli include ...

Se vuoi, puoi utilizzare anche la Sleep (Windows) o usleep (Linux) ...

alienone
20-03-2008, 19:51
Ma io non le vedo dichiarate nelle direttive del preprocessore!! Se fosse così basterebbe aggiungere un define...che non c'è!
Del ciclo for non capisco l'utilità, non inizializza nessuna variabile (non ce n'è bisogno) e poi non usa mica un contatore, verifica solo questa ipotesi:clock() - start) <= seconds * CLOCKS_PER_SEC
Come funziona usleep? Devi dare come argomenti i millisecondi per cui vuoi che aspetti o qualcosa del genere?

oregon
20-03-2008, 19:59
Originariamente inviato da alienone
Ma io non le vedo dichiarate nelle direttive del preprocessore!! Se fosse così basterebbe aggiungere un define...che non c'è!

Non capisco cio' che hai scritto ... comunque, la costante e' dichiarata in time.h ...



Del ciclo for non capisco l'utilità

Beh ... l'utilità e' chiara ... fa attendere il programma per il tempo richiesto ...



non inizializza nessuna variabile (non ce n'è bisogno)

Appunto ... non ce n'e' bisogno ... ma una for non e' necessaria ...



e poi non usa mica un contatore, verifica solo questa ipotesi:clock() - start) <= seconds * CLOCKS_PER_SEC

E quindi? Il problema qual e'? Ancora non l'ho capito ...

Perchè non usa un contatore non si può utilizzare una for ?



Come funziona usleep?

http://linux.die.net/man/3/usleep

alienone
20-03-2008, 22:04
come esiste una costante in time.h che si chiama CLOCKS_PER_SEC ??
Ok, comunque quella funzione sono riuscito ad usarla, però non mi è servita...
Insomma mi serviva un programma che si collegasse via ftp (da terminale) con una serie di comandi system e si loggasse per caricare automaticamente dei file; per farlo quindi ho pensato si potessero inserire dei dati come nome utente e password facendo aspettare un pò il programma, ma ciò non succede...
Anche in questo caso mi potreste aiutare gentilmente come avete fatto per il primo problema?? :)

Loading