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

Threads & Processus C++ Discussion :

Processus en pause


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut Processus en pause
    Bonjour,

    Je suis un peu debutant dans la programmation multiprecessus et aussi nouveau sur le forum.
    Je cherche a mettre en pause un processus.
    Mon but est de lister tout les processus tournant sur une machine et de mettre quelques un en pause mais pas de les tuers afin de les remettres en marche a la fin de mon processus.
    Merci de votre aide

  2. #2
    Membre Expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Par défaut
    il faut regarder du coté de signal/sigaction/kill et choisir le signal approprié a envoyer a ton application.

    http://pwet.fr/man/linux/appels_systemes/kill

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include <sys/types.h>
     
     
    #include <signal.h>
     
    int kill(pid_t pid, int sig);
    Voici la liste des signaux que tu peux envoyer a un processus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
           SIGHUP       1    hangup
           SIGINT       2    interrupt
           SIGQUIT      3    quit
           SIGILL       4    illegal instruction (not reset when caught)
           SIGTRAP      5    trace trap (not reset when caught)
           SIGABRT      6    used by abort
           SIGEMT       7    EMT instruction
           SIGFPE       8    floating point exception
           SIGKILL      9    kill (cannot be caught or ignored)
           SIGBUS      10    bus error
           SIGSEGV     11    segmentation violation
           SIGSYS      12    bad argument to system call
           SIGPIPE     13    write on a pipe with no one to read it
           SIGALRM     14    alarm clock
           SIGTERM     15    software termination signal from kill
           SIGURG      16    urgent condition on IO channel
           SIGSTOP     17    sendable stop signal not from tty
           SIGTSTP     18    stop signal from tty
           SIGCONT     19    continue a stopped process
           SIGCHLD     20    to parent on child stop or exit
           SIGTTIN     21    to readers pgrp upon background tty read
           SIGTTOU     22    like TTIN for output if (tp->t_local&LTOSTOP)
           SIGPOLL     23    System V name for SIGIO
           SIGXCPU     24    exceeded CPU time limit
           SIGXFSZ     25    exceeded file size limit
           SIGVTALRM   26    virtual time alarm
           SIGPROF     27    profiling time alarm
           SIGWINCH    28    window changed
           SIGLOST     29    resource lost (eg, record-lock lost)
           SIGUSR1     30    user defined signal 1
           SIGUSR2     31    user defined signal 2
    a priori tu devrais jouer avec SIGSTOP/SIGSTP pour stopper ton processus et SIGCONT pour le faire repartir.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Merci jabbounet,

    Par contre le fait de mettre le processus en SIGSTOP et de le relancer ensuite ne poseras pas de probleme pour ce processus ?
    comment puis je appliquer cette methode ? je develope sur Windows et ton liens est pour linux.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Apres quelque recherche sur killsignal, j'ai pu remarquer que c'etait pour Linux.
    hors je developpe sur Windows.
    Quelqu'un pourrait m'aider au sujet de mettre des processus en suspend et les relancer par la suite ?
    Merci d'avance.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 118
    Billets dans le blog
    148
    Par défaut
    Il va donc falloir cherche dans la msdn.

    Ceci peut être interessant à lire, pour une première investigation: http://www.codeproject.com/KB/threads/pausep.aspx

    ( Pardon pour le fait que cela soit en anglais )
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 76
    Par défaut
    Merci pour ce petit doc, je suis deja tombé dessus et analysé sa solution.
    elle consiste a ennumerer tout les threads d'un processus et de les mettre en pause, mais j'ai cru comprendre que cette solution n'etait pas trop conseillé dans le sens ou la reprise des threads n'etaient pas assurés. c'est a dire que la reprise des threads ne se faisant pas dans le bon ordre pouvait poser un souci.
    c'est pour ca que je cherche eventuellement une solution de mettre directement le processus en pause qui je pense gereras l'ordre de reprise des threads qui lui sont associés. (etant debutant, je supose peut etre des choses qui ne sont pas verifié)
    Avec des quelques recherches, j'ai trouvé une dll qui ferais ca, mais je n'arraive pas trouver comment m'en servir.
    cette dll se trouve a parament dans system32 et se nomme ntdll.
    elle aurait une methode NtSuspendProcess(hprocess) et une NtResumeProcess(hProcess).
    mais je ne sais pas comment les appliqués.
    Merci de votre aide.

Discussions similaires

  1. Solution pour mettre en pause et relancer processus par nom
    Par beginner936 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 24/07/2014, 13h54
  2. Réponses: 3
    Dernier message: 25/05/2012, 18h24
  3. Communication inter-processus et pause()
    Par jsebfranck dans le forum POSIX
    Réponses: 10
    Dernier message: 14/02/2008, 14h52
  4. [Processus][pause] attendre la fin ?
    Par MrDuChnok dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 19/07/2004, 13h51
  5. Réponses: 2
    Dernier message: 04/10/2002, 09h13

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