• [^] # Re: intéressant

    Posté par . En réponse au journal wait4: attendre la fin d’un ou plusieurs processus quelconques. Évalué à 1.

    Merci pour les remarques et le patch.

    Il y a un problème dans le cas où netlink n'est pas supporté et on passe le PID d'un process auquel on ne peut pas envoyer de signal: EPERM est retourné par kill(), et wait4 ne va jamais retourner.

    C’est le comportement voulu : si kill(2) renvoie EPERM, c’est que le processus cible existe (on ne peut pas lui envoyer de signal, mais peu importe, savoir que le processus existe est la seule chose qui nous intéresse), et qu’il faut donc continuer à l’attendre. Ce n’est que lorsque le processus n’existe pas ou plus (soit lorsque kill(2) échoue avec errno == ESRCH) que l’on peut retourner.

    Je note les remarques concernant le gestionnaire de signal.

    Sinon :

    ec = payload->evt.event_data.exit.exit_code / 256;

    Tu peux utiliser WEXITSTATUS().

    Ah, merci ! Ça me dérangeait de devoir utiliser une constante magique.