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

Linux Discussion :

Utilisation de la fonction SIGNAL en C


Sujet :

Linux

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Utilisation de la fonction SIGNAL en C
    Salut tout le monde

    J'ai deja pose ma question sur un autre forum, ne m'en voulez pas si je la pose aussi ici
    Dans mon code j'utilise la fonction signal pour intercepter le signal SIGWINCH (redimentionnement de la fenetre) de la facon suivante:

    int main(int argc, char **argv)
    {...
    signal(SIGWINCH, mon_signal)
    ...}

    void mon_signal(int signal)
    {...}

    Mais la fonction mon_signal a besoin d'arguments que contien la fonction main, notamment argc et argv. Comment est ce que je peux faire pour transmettre tout ca a ma fonction mon_signal ?
    Merci de vos reponses

  2. #2
    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 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    avec signal ce n'est pas possible.

    Il faut les avoir en globales (les copier dans des varaibles globales au module).


    Sinon il faut utiliser sigaction ou quelque chose comme ca (je ne me souviens plus le nom exact, voir "man 7 signal" pour voir le nom exact), qui permet de passer des parametres, mais n'est pas disponible sur tous les unixoides, et pas portable sur Windows ..)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 86
    Points : 111
    Points
    111
    Par défaut
    je pense que sigaction, est surtout utilisée pour les fonctionx posix, notament avec les handlers. Notamment avec la signature

    int sigaction (int sig, struct sigaction *act, struct, sigaction *anc);
    où struct sigaction void (*sa_handler) () ; /*fonction */
    sigset_t sa_mask; /* masque des signaux */
    int sa_flags; /* options */)

    ça revient au meme à la fonction signal, sans les structures sigaction.

    Mais pour revenir à ton problème, je ne pense pas qu'on puisse transmettre des arguments à des handlers, et dit plus haut tu devrais avoir des variables globales pour que ta fonction puisse les utiliser.

Discussions similaires

  1. [LG]Utilisation de la fonction time
    Par kmitz dans le forum Langage
    Réponses: 4
    Dernier message: 08/04/2005, 13h05
  2. Utilisation de la fonction de déploiement
    Par mchicoix dans le forum XMLRAD
    Réponses: 4
    Dernier message: 01/03/2005, 14h35
  3. [LG]Utilisation de la fonction Random
    Par chloe95 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2005, 14h20
  4. Utilisation de la fonction qsort
    Par Jsmeline dans le forum C
    Réponses: 8
    Dernier message: 28/01/2005, 12h40
  5. [LG]librairies : utiliser seulement quelques fonctions
    Par wwwroom dans le forum Langage
    Réponses: 13
    Dernier message: 14/05/2004, 22h50

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