IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Compter le temps


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 52
    Points
    52
    Par défaut Compter le temps
    bonsoir,

    je suis sous linux et je voudrai créer une fonction qui me compte le temps.
    en fait mon compteur doit etre dans un thread qui doit tuer son fil d'exécution principal au bout de 10 secondes
    pendant ces 10 seconde, le fil principal doit executer des actions...

    j'ai pensé à lafonction sleep() mais je crois qu'elle attend 10 secondes avant d'exécuter la suite du code, donc, dans mon cas, pendant ces 10 seconde le processus ne fait rien
    et après ces 10 seconde, il est tué
    en tous cas c'est l'impression que j'ai sur l'execution de mon code...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    /*crée un tread timer*/
    void *timer(pid_t p) {
            sleep(10);
            kill(p, SIGALRM);
            pthread_exit(NULL);
    }
     
    int main(void) {
     
     
     	//...
     
     	/*création du processus process*/
            pid_t process;
            process = fork();
            if(process == -1) {
                    printf("Erreur de création du processus process\n");
            }
            else if(process == 0) {
                    pthread_t t1;
                    int th_id = pthread_create(&t1, NULL, timer(getpid()), NULL);
     
    		//ecriture dans des fichiers
    		//...
     
    		pthread_join(t1, NULL);
     
            }
            else {
                    wait(process);
            }
     
    	//...
    	//...
     
    }
    est ce que mon code est correct et mon impression avec sleep() est correct ou puis je proceder autrement ?

    Merci d'avance pour vos réponses

  2. #2
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    Salut,

    tu as raison sur le sleep(), il est bloquant.

    Par contre si tu fork pas besoin de thread non (fork ne créer pas de threads) ?
    Ton processus est dupliqué => ils se deroulent en paralelle, le pere connait le PID du fils, donc le pere doit pouvoir tuer le fils au bout de 10 secondes.
    "vaste programme"

  3. #3
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 86
    Points : 52
    Points
    52
    Par défaut
    oui, tout a fait d'accord avec toi, avec un processus fils, il n'y aurait pas de problème...
    mais étant un peu têtu et un peu curieux, j'me forcerai bien a garder ce thread pour trouver une alternative a sleep a l'intérieur de ce dernier...

    merci BainE

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    setitimer

    +


    signal (SIGALRM
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. [XL-2007] minuteur: compter le temps passé sur un fichier c'est possible?
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/09/2009, 17h57
  2. [Débutant] Compter le temps qu'a mis un programme à s'executer entièrement?
    Par thtghgh dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/05/2009, 15h07
  3. Réponses: 5
    Dernier message: 25/03/2008, 17h35
  4. [Dates] Compter le temps
    Par pas30 dans le forum Langage
    Réponses: 8
    Dernier message: 24/12/2006, 14h00
  5. utiliser javascript pour compter le temps
    Par pas30 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/12/2006, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo