Compteur de temps
sarahchaima
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
sarahchaima Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
sarahchaima Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je veux savoir si par exemple je fais un alarm(80) et que mon programme est devenu en pause après un ctrl+z,je veux une méthode qui me permet de savoir combien du temps a passé exactement de mes 80 secondes pour
que la prochaine fois quand mon programme est en cours d'exécution il termine le reste du 80 secondes ,est ce que un simple compteur ça suffira?
j’ai essayé mais il y a toujours des secondes en plus
je veux savoir si par exemple je fais un alarm(80) et que mon programme est devenu en pause après un ctrl+z,je veux une méthode qui me permet de savoir combien du temps a passé exactement de mes 80 secondes pour
que la prochaine fois quand mon programme est en cours d'exécution il termine le reste du 80 secondes ,est ce que un simple compteur ça suffira?
volatile sig_atomic_t temps=0;
j’ai essayé mais il y a toujours des secondes en plus
#include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<signal.h> volatile sig_atomic_t cpt_CTRL_C=0; volatile sig_atomic_t CAS=0; volatile sig_atomic_t proc_en_pause=0; volatile sig_atomic_t temps=0; static void IntHandler(int sigNum){ cpt_CTRL_C ++; if(cpt_CTRL_C==3){ printf("\n programme termne\n"); kill(getpid(),SIGKILL); } } static void TstHandler(int sigNum){ if(proc_en_pause==0){// debut de prise de mesures proc_en_pause=1;//passer a letat suivant(active) pour la prochaine fois printf("\n Debut de prise de mesures\n"); alarm(1); }else if(proc_en_pause==1){ proc_en_pause=2;//processus desactives printf("\n Programme suspendu \n"); }else if(proc_en_pause==2){ proc_en_pause=1; printf("\n programme en cours dexecution\n");//processus actives kill(getpid(),SIGCONT); int x=60-temps; alarm(x); } } static void AlarmHandler(int sigNum){ temps ++; if(proc_en_pause==1){//le programme est en cours dexecution(letat actif) if(CAS==0){ CAS ++; printf("\n processus:1,mesure:1 \n"); temps=0; alarm(60); }else if(CAS==1){ CAS++; printf("\n processus:1,mesure:2 \n"); temps=0; alarm(60); }else { CAS=0; printf("\n processus:2,mesure \n"); temps=0; alarm(60); } } } int main(){ signal(SIGINT, IntHandler); signal(SIGTSTP,TstHandler); signal(SIGALRM,AlarmHandler); while(1){ pause(); } }
Configuration: Linux / Firefox 79.0
A voir également:
- Compteur de temps
- Compteur électrique - Guide
- Compteur de contractions - Télécharger - Santé & Bien-être
- Renommer plusieurs fichiers en même temps - Guide
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Combien de temps reste une story sur facebook - Guide
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
"il y a toujours des secondes en plus": ce n'est pas clair. peux-tu donner un exemple?
il me semble que la méthode choisie est très complexe et très peu précise.
pourquoi n'utilises-tu pas une fonction telle que clock()?
https://fr.wikiversity.org/wiki/Fonctions_de_base_en_langage_C/time.h
"il y a toujours des secondes en plus": ce n'est pas clair. peux-tu donner un exemple?
il me semble que la méthode choisie est très complexe et très peu précise.
pourquoi n'utilises-tu pas une fonction telle que clock()?
https://fr.wikiversity.org/wiki/Fonctions_de_base_en_langage_C/time.h
bonsoir,
ils nous ont demandé d'utiliser ces signaux; pour le temps j'ai utilisé un chronomètre et j'ai vu que la durée dépasse une minute; ma question est ce que c'est possible d'obtenir ou de calculer le temps déjà passé de ma duré qui est 60 secondes
par exemple: si le premier message est affiché ,après une minute le 2 ème message sera affiché
alors si je met mon programme en pause juste après le premier message par exemple au 20 èmme secondes alors il reste 40 secondes pour afficher le deuxième message donc après la reprise de la pause je veux qu'il attend juste 40 seconde et pas moins ou plus pour continuer et afficher le deuxième message
ils nous ont demandé d'utiliser ces signaux; pour le temps j'ai utilisé un chronomètre et j'ai vu que la durée dépasse une minute; ma question est ce que c'est possible d'obtenir ou de calculer le temps déjà passé de ma duré qui est 60 secondes
par exemple: si le premier message est affiché ,après une minute le 2 ème message sera affiché
alors si je met mon programme en pause juste après le premier message par exemple au 20 èmme secondes alors il reste 40 secondes pour afficher le deuxième message donc après la reprise de la pause je veux qu'il attend juste 40 seconde et pas moins ou plus pour continuer et afficher le deuxième message
oui, c'est possible, et je t'ai suggéré comment faire.
tu ne progresseras pas ni n'apprendras si nous répondons à ta place.
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
tu ne progresseras pas ni n'apprendras si nous répondons à ta place.
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/