• [^] # Re: intéressant

    Posté par . En réponse au journal wait4: attendre la fin d’un ou plusieurs processus quelconques. Évalué à 2. Dernière modification le 21 mars 2013 à 18:00.

    la version avec polling a une race, si jamais le PID est recyclé entre deux polling.

    Oui, j’avais conscience de ça, mais je n’ai pas spécialement cherché à l’éviter pour l’instant.

    Je garde ton approche basée sur /proc/pid/status dans un coin, mais je dois admettre qu’étant sous GNU/Linux moi-même et disposant donc de Netlink, la méthode avec polling n’est vraiment qu’une solution de repli,1 que je ne suis pas réellement motivé à améliorer…

    Pour les systèmes autres que Linux, je serais plutôt enclin à regarder du côté des mécanismes équivalents à Netlink, s’il en existe. Par exemple, je viens de voir que FreeBSD a un appel kevent qui devrait permettre de faire sensiblement la même chose, je vais regarder ça de plus près.

    le socket netlink reçoit un message par fork()/exec()/exit(), pour tous les process sur la machine: s'il beaucoup de process sont créés, le socket buffer risque de se remplir.
    […]
    Tu devrais pouvoir mettre en place un filtre pour ne recevoir que les notifications d'intérêt, c'est pas trivial (BPF) mais ça peut être intéressant ;-)

    Je vais regarder ça, merci pour l’info.


    1 En fait, la principale raison d’être de la méthode de repli en cas d’absence de Netlink est de m’éviter de passer pour un développeur linux-centrique (ce qui est perdu d’avance, puisque je suis linux-centrique — mais je me soigne).