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 :

Contrôler le temps d'exécution mémoire d'un programme


Sujet :

C

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut Contrôler le temps d'exécution mémoire d'un programme
    Bonjour,
    Je dois écrire en C un petit programme qui surveille le temps d'exécution de mon véritable programme lancé en parallèle et le tuer s'il dépasse la limite autorisée.
    Mon programme C doit faire cette vérification suivant un certains intervalle de temps; toutes les 2 minutes par exemples.
    J'ai un petit code qui permet juste de calculer un temps d'exécution et je voudrais l'adapter à mon problème.
    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
     
    #include <time.h>
    // Nom de la classe
    // Prend en paramètre la limite de temps d'exécution mémoire et le Programe P
     
    // Traitement du programme
    //Initialisation
    double tempsmax;
    double tempsDebut = clock();
    const long CLK_PER_MS = (long)(CLOCKS_PER_SEC / 1000.0)
     
    //Juste quelques affichages
        printf("clock() = %i\n", (int)clock());
        printf("tempsDebut = %i\n", tempsDebut);
     
    //Calcul du temps d'exécution à intervalle donné (ttes les 2 min par exple)
    double tempsExec=(double)(clock()-tempsDebut);
     
    //Si tempsExec > tempsMax Arrêter le programme P
     
    //Conversion en secondes
        double tempsExec=(double)(clock()-tempsDebut)/CLOCKS_PER_SEC;
     
    //Affichage du temps
        printf("tempsExec = %i\n", tempsExec);
    Merci d'avance de votre aide.

  2. #2
    Membre éclairé

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Points : 690
    Points
    690
    Par défaut
    Citation Envoyé par Decon Voir le message
    Je dois écrire en C un petit programme qui surveille le temps d'exécution de mon véritable programme lancé en parallèle et le tuer s'il dépasse la limite autorisée.
    Bonsoir,
    Si tu as besoin de lancer en paralléle deux programmes qui tourne sur une seul machine, tu auras besoin les thread voici un tuto sur les thread. Tu pourra controler ainsi le temps d'exécution de ton programme.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Merci pour le lien,
    Je suis allé voir. Cependant, mon programme principal est un programme écrit en java comme tout le projet d'ailleurs. Ce que je veux c'est lors de l'exécution de cette partie du programme de lancer à ce moment là le dit programme et un autre code en C chargé de suivre son évolution.
    L'autre question est donc de savoir comment depuis un programme java, je peux déclencher un pg C qui se chargera de surveiller l'exécution de cette méthode.
    J'espère avoir été un peu plus clair.

  4. #4
    Membre éclairé

    Homme Profil pro
    Développeur mobile iOS / Android
    Inscrit en
    Décembre 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur mobile iOS / Android
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 259
    Points : 690
    Points
    690
    Par défaut
    Il existe aussi les thread en java, pourquoi ne pas adapter ta fonction permettant de suivre l'évolution de ton programme en java comme le reste?
    Il n'y a rien de très compliqué.
    Pour revenir aux thread tu t'apercevras qu'il est très utiles dés que nous avons dans notre programme des morceaux de code qui doivent s'exécuter en même temps, comme dans ton cas.

    Bon courage pour la suite.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Merci de ta réponse.
    Je regarde tout ça et essaie de procéder ainsi.

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Les threads n'ont rien à voir avec le problème.

    Tu es sous quel OS ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    J'utilise deux serveurs. Un sous linux et l'autre sous Windows.
    Dans ce cas, comment solutionner mon problème.
    Merci d'avance.

  8. #8
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    le "surveillant" est sous quelle plateforme ?

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Linux. Et au niveau du temps, c'est le temps cpu qui m'intéresse.

  10. #10
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    je ne vois pas tellement de solutions à part soit faire une communication (socket par exemple) où ton premier programme va écrire "working at t", et ton second va lire et agir si le delta est > à une certaine limite, ou à la limite écrire dans un petit fichier "démarre à t" , fichier téléchargé (via ftp par exemple) par le 2ième programme qui attend et tuera à distance..

    Sauf que pour tuer à distance (et pas seulement pour tuer d'ailleurs) il faut non seulement des droits mais "être" sur l'ordi local (même si c'est via un rsh c'est équivalent)

  11. #11
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Tu peux connaitre les temps d'utilisation CPU d'un autre process en allant lire le fichier /proc/PID/stat. "man proc" pour plus d'information sur les champs contenus dans ce fichier.

    Evidement ça c'est pour Linux. La façon de faire dépend du système sur lequel tourne le process à surveiller.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 87
    Points : 70
    Points
    70
    Par défaut
    Merci pour les réponses en particulier celle sur l'utilisation du temps cpu.
    Peux tu m'en dire plus Matafan parce que je vois pas comment l'utiliser concrètement.
    Sinon , pour Souviron34 mes 2 programmes sont tous les deux sur la même machine à chaque fois; donc pas besoin de le tuer à distance.

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/12/2014, 23h39
  2. Réponses: 3
    Dernier message: 24/06/2007, 01h24
  3. Réponses: 2
    Dernier message: 25/05/2004, 15h33
  4. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48
  5. Temps d'exécution des instructions FPU
    Par ubi dans le forum Assembleur
    Réponses: 2
    Dernier message: 24/10/2003, 18h39

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