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 :

signal et identification de l'émetteur


Sujet :

POSIX C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 23
    Points
    23
    Par défaut signal et identification de l'émetteur
    Bonsoir,

    J'essaie de mettre au point un gestionnaire de signal. Le problème que je rencontre est le suivant :
    le gestionnaire en fonction du signal reçu met à jour des variables de type sig_atomic_t. Jusque là, pas de problème. Par contre, je voudrais pouvoir controler d'où vient le signal émis. Par l'intermédiaire de la structure siginfo je récupère le pid de l'émetteur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (info->si_pid == getppid())
    Ici par exemple je vérifie que le père du processus en cours est bien l'émetteur. Par contre, le processus a lancé plusieurs autres taches, et c'est sur celle-ci que je veux effectuer le contrôle. La liste des fonctions 'asynchronous-safe function' étant limité, je pense utiliser afin de déterminer, si le signal émis vient bien du groupe (que je ne confonds pas avec les groupes utilisateurs) de processus de l'application.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(getppid() == getpgrp(info->si_pid))
    J'en viens à ma question :
    - un processus extérieur à ceux de l'application, peut-il modifier son groupe (setpgid) de manière à envoyer un signal en usurpant son identité de groupe, et donc tromper le gestionnaire de signal ?
    - dans ce cas quelle parade, trouver ? changer de sessions au démarrage ?
    J'espère avoir été clair dans mes explications, c'est mon premier post de demande.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par philippe_21 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(getppid() == getpgrp(info->si_pid))
    Après vérification avec man le prototype :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pid_t getpgrp(pid_t pid);
    correspond pas à la version BSD et non pas à la version POSIX.

    Comment dans ce cas, rester compatible POSIX, et éviter en même temps d'utiliser une variable globale qui soit d'un type différent de sig_atomic_t (si je ne me trompe pas la valeur d'une telle variable étant limitée 0-127) ? Est-ce seulement possible ?

Discussions similaires

  1. Identification de signal
    Par zolle1 dans le forum Signal
    Réponses: 2
    Dernier message: 13/12/2014, 00h52
  2. raspberry emetre un signal Un émetteur RF 433Mhz
    Par moijerem dans le forum Linux
    Réponses: 16
    Dernier message: 17/01/2013, 12h14
  3. [VB6] [MDI] Signaler la fermeture d'une fille à la mère
    Par cpri1shoot dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/04/2004, 09h57
  4. Interception du signal SIGINT
    Par macleod dans le forum MFC
    Réponses: 2
    Dernier message: 01/07/2003, 19h39
  5. identification lettre (pb accent)
    Par scorbo dans le forum C
    Réponses: 5
    Dernier message: 14/12/2002, 03h59

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