Forum Programmation.c wait(), mais pas sur un fils

Posté par  .
Étiquettes : aucune
0
1
mar.
2007
Hello world,

J'ai honte de vous poser une question qui m'a l'air vraiment aussi conne (alors que j'ai cherché !), mais comment attendre l'arrêt d'un processus quelconque à partir de son pid?
(waitpid, wait, wait4 et wait3 ne marchant que sur un processus fils)

(Autrement que for(;open("/proc/" + pid) != ENOENT;); s'il vous plait ;))
  • # ptrace ?

    Posté par  . Évalué à 4.

    Jamais essayé, et ça n'a pas l'air super trivial non plus, mais regarde du coté de ptrace(2).
    C'est ce qu'utilisent strace et gdb pour tracer des processus deja lancés identifiés par leur pid.
    PTRACE_ATTACH:
    Attaches to the process specified in pid, making it a traced
    "child" of the current process;

    Une fois "rattaché" à ton process, les wait() devraient marcher. Cependant attention, tu vas aussi sans doute recevoir les notifications de tous les signaux que reçoit le process, qui est alors stoppé en attendant que tu fasses ton boulot de debuggueur, et il semble qu'il faille le redémarrer "à la main" à chaque fois (indiqué dans le man).
    De plus wait() ne marchera plus pour le vrai parent ; ça risque donc de casser des trucs.
  • # kill ?

    Posté par  . Évalué à 3.

    Il semble qu'il est possible d'envoyer un signal 0 au processus surveillé tout les x secondes pour voir si il est toujours là avec la
    fonction kill(pid, signal) (voir man 2 kill).
    Plus de détail là :
    http://www.linuxjunkies.org/html/Process-Monitor-HOWTO.html
  • # Même problème

    Posté par  . Évalué à 1.

    Bonjour,

    J'ai le même problème...

    J'ai d'abord procédé comme ça :
    while (!kill(pid, 0));

    Ca marche mais quand je fais top, je vois ça :
    PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
    16334 user 64 0 16K 408K RUN 0:43 99.02% 99.01% my_wait

    Quelqu'un saurait-il m'expliquer à quoi correspondent précisément ces deux champs (WCPU & CPU) et pourquoi ces valeurs sont si élevées ?

    Merci d'avance !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.