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 :

Envoyer un signal à un processus


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut Envoyer un signal à un processus
    J'ai un processus codé en C, je souhaiterai associer une action d'arrêt propre de ce processus en tapant la commande ./mon_processus STOP

    Si vous avez des idées...

    Merci =)

  2. #2
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    STOP ressemble très fort au premier argument
    que tu pourrais passer à ton programme en C.

    Ne peux tu pas coder dans ton programme un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    [...]
     
    if ( ! strcmp( argv[1] , "STOP" ) )
    {
      /* Ici code d'arrêt de ton programme */
    }
     
    [...]
    Code ultra simpliste, c'est l'idée qui compte ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    Si le processus est deja lancé cela ne risque-t-il pas de le lancer une seconde fois ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    J'ai donc un processus qui tourne en permanence.
    Ce processus fonctionne avec une boucle :

    while(a==1)
    {
    mon processus;
    }

    Je veux que lorsque l'on tape ./nom_processus STOP
    cela envoi un signal et change la valeur de a en 0 par exemple afin de mettre fin à la boucle et arreter proprement le processus sans devoir passer par un kill.

  5. #5
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Ah oui je comprends mieux, ma réponse n'est donc pas adapté navré.

    La fonction signal me parait bien adaptée. Ensuite tu pourra utiliser la commande kill
    avec le signal approprié et faire réagir ton processus. C'est standard.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    Justement je ne veux pas utiliser kill, je veux arreter mon programme proprement en changeant la variable dans le while afin que la boucle s'arrête...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    A précisé que je connais le PID du processus qui est stocké dans un fichier texte, il faut donc envoyer une valeur à la variable du while au processus ayant le pid correspondant.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 63
    Points : 40
    Points
    40
    Par défaut
    Je pensai utiliser les fonctions raise et signal pour émettre le signal dans la condition STOP et le réceptionner dans la fonction faisant appel à la boucle while afin de terminer cette boucle mais je ne vois vraiment pas comment m'y prendre...

  9. #9
    Membre actif
    Profil pro
    Ingénieur
    Inscrit en
    Mars 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Mars 2007
    Messages : 199
    Points : 291
    Points
    291
    Par défaut
    Avec un kill et le signal adapté tu peux terminer correctement
    ton programme, même voir ne pas le terminer mais déclencher
    d'autres actions. Je te conseille de rechercher sur le net, tu y trouveras
    pléthore d'exemples.
    Seul le signal SIGKILL ne peut pas être intercepté.

    Commence par lire : man 2 signal, man 7 signal

Discussions similaires

  1. Envoyer un signal à un processus lancé par un user différent
    Par gedeon555 dans le forum Administration système
    Réponses: 1
    Dernier message: 17/03/2009, 23h38
  2. Envoyer une commande à un processus déjà lancé
    Par Life Hunter dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 10/04/2007, 13h09
  3. Envoyer un signal aux clients
    Par Denn's dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 29/08/2006, 16h53
  4. Envoyer un signal à un programme
    Par vbcasimir dans le forum Administration système
    Réponses: 4
    Dernier message: 23/05/2006, 13h46
  5. [POSIX][SIGNAL] envoyer un signal a thread avec sigqueue
    Par Mokhtar BEN MESSAOUD dans le forum POSIX
    Réponses: 3
    Dernier message: 09/02/2006, 18h07

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