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

POSIX C Discussion :

envoi de signal selon un timing très précis


Sujet :

POSIX C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut envoi de signal selon un timing très précis
    bonjour tout le monde

    j'ai un processus qui doit envoyer à son père un signal toutes les secondes, mais exactement toutes les secondes.

    pour l'instant, mon processus ressemble à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while(1)
    {
         sleep(1);
         kill(getppid(), SIGUSR1);
    }
    mais ceci ne répond pas entièrement à mes attentes puisque le signal est reçu toutes les une seconde plus un petit chouilla.

    On m'a alors parlé du signal SIGALRM et de la fonction alarm().
    Je serais donc tenté de modifier mon code en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while(1)
          alarm(1);
    Mais comment puis-je alors spécifier que je souhaite envoyer le signal au père ?

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    kill(getppid(),SIGALARM);
    t'as essayé ça?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    si je fais un sleep(1) suivi d'un kill(getppid, SIGALRM); tout ce dont je suis sûr, c'est que le signal est émis après la seconde écoulée, le chouilla sera toujours là à la réception.

    le problème reste donc entier.

  4. #4
    Membre éprouvé
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Points : 977
    Points
    977
    Par défaut
    Tu peux redefinir le traitement associé a ton SIGALRM.
    Dans la fonction (coté fils) qui va attraper le signal, tu fais ton kill vers le pere, puis tu rearme le signal en refaisant alarm(1)

    Tu pourra difficilement faire mieux: tu aura toujours un pouille de decalage (mais avec ma solution, c'est le cas ou tu reduit au maximum le delai)

    ++
    Pouic
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Envoi de mails selon une heure et une date donnée stockée
    Par vw91 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/06/2008, 12h00
  2. Quel éditeur XML? (pour un besoin très précis)
    Par coyotte507 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 18/05/2008, 15h35
  3. [WIFI] Signal excellent mais ping très long
    Par Mut dans le forum Hardware
    Réponses: 1
    Dernier message: 06/01/2008, 14h11
  4. [Php/MySQL] Envoi de mails selon requête
    Par martonpylon12 dans le forum Débuter
    Réponses: 7
    Dernier message: 28/03/2006, 15h00
  5. [Timer]Timer pas très précis
    Par harold63 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 25/07/2005, 09h36

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