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).
[^] # Re: intéressant
Posté par gouttegd . 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.
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.
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).