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 :

Temporisation sous DOS (timer). Equivalent de alarm()


Sujet :

C

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut Temporisation sous DOS (timer). Equivalent de alarm()
    J'ai une petite question de C:

    j'ai besoin de faire un petit programme en C!, qui va faire beaucoup de
    calculs. Toutes les 10 minutes, je veux faire une sauvegarde du tableau que
    je manipule.
    Je pense faire un programme, qui va faire les calculs en boucle et créer un
    timer qui va déclencher une fonction.
    J'aimerais savoir comment sous DOS créer un timer de 10 minutes et qui va
    appeler une fonction(handler).

    Sous unix la fonction s'appelle alarm(nSecondes).
    le code sous Unix donne ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void it_horloge(int sig) {
     
    .... traitements
      sec=alarm(DUREE_FEU);
    }
     
    int main(int argc,char *argv[]) {
    signal(SIGALRM,it_horloge) ; /* interception du signal  alarme*/
     sec=alarm(DUREE_FEU);
     
    ....boucle infinie...
    }

    C'est quoi l'équivalent sous DOS?

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Tu programmes réellement sous DOS? ça existe encore?

  3. #3
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Tu parles du DOS ou d'un programme console sous Windows ? Dans le premier cas tu pourrais essayer ça : http://www.ctyme.com/intr/int-1a.htm
    Mais ça a l'air de faire double emploi avec les fonctions du C...

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Tu programmes réellement sous DOS? ça existe encore?
    C'est sous console Windows, c'est bien du DOS? non?

    Tu parles du DOS ou d'un programme console sous Windows ? Dans le premier cas tu pourrais essayer ça : http://www.ctyme.com/intr/int-1a.htm
    Mais ça a l'air de faire double emploi avec les fonctions du C...
    __________________
    Rules of Optimization:

    * Rule 1: Don't do it.
    * Rule 2 (for experts only): Don't do it yet.

    - M.A. Jackson
    Ce sont les interruptions qu'on utilise avec l'assembleur, on peut les utiliser en C et avec XP ou vista

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Si c'est réellement sous DOS, tu ne peux pas de manière simple. Le DOS n'a rien prévu pour que le système puisse appeler un handler dans ton programme à intervalle régulier ou sur un événement particulier.

    Ce que tu peux faire :
    1/ La solution simple mais pénible, regarder périodiquement dans tes boucles de calcul si tu dois faire une sauvegarde.
    2/ La solution idéale mais plus complexe, installer un handler d'interruption sur l'interruption levée par l'horloge RTC de ton PC, programmer l'horloge RTC de manière à te générer une alarme dans 10 minutes. Je l'ai fais il y a longtemps, cela marche.

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Citation Envoyé par cmako Voir le message
    C'est sous console Windows, c'est bien du DOS? non?
    Non.
    DOS, c'est un vieil environnement 16-bits, sans protections matérielle, et qui ne marche plus "directement" sous un Windows récent (il tourne dans une Virtual DOS Machine).
    Win32 console, c'est du vrai programme 32-bits (ou même 64-bits) sous Windows, qui a accès aux fonctions de Windows.

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Non.
    DOS, c'est un vieil environnement 16-bits, sans protections matérielle, et qui ne marche plus "directement" sous un Windows récent (il tourne dans une Virtual DOS Machine).
    Win32 console, c'est du vrai programme 32-bits (ou même 64-bits) sous Windows, qui a accès aux fonctions de Windows.
    Ok, alors comment on peut faire ça sous la console Windows ?

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Typiquement, avec un programme Win32 console, tu peux utiliser la fonction Sleep() pour attendre un certain nombre de millisecondes.
    Ou bien, tu peux aussi utiliser un Waitable Timer...

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Typiquement, avec un programme Win32 console, tu peux utiliser la fonction Sleep() pour attendre un certain nombre de millisecondes.
    Ou bien, tu peux aussi utiliser un Waitable Timer...
    La fonction sleep endormit le processus courant, alors que moi je veux déclencher un deuxième processus (ou threads) toutes les x secondes.


Discussions similaires

  1. Equivalent de crontab sous Dos?
    Par irouni dans le forum Langage
    Réponses: 1
    Dernier message: 26/02/2008, 12h03
  2. timer sous dos
    Par prison_break dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 30/07/2007, 15h12
  3. sous DOS, rebooter la machine
    Par jbat dans le forum C
    Réponses: 12
    Dernier message: 03/11/2003, 09h44
  4. Mémoire insuffisante sous Dos
    Par Bubonik software dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 20/09/2003, 10h35
  5. Quel etait le secret de Rapid File, la bdd sous DOS
    Par Robert A. dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 27/05/2003, 04h53

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