Je veux utiliser setitimer()
(ou moins probable, le alarm()
) dans le processus multithread dans Linux 2.6+ avec libc activé NPTL. Quel fil recevra sigalarm (SIGALRM)
du noyau?setitimer, SIGALRM & processus multithread (linux, c)
Merci.
Mise à jour 2014-04: Comment définir le setitimer()
dans un programme multithread, si je veux écrire un utilitaire de profilage comme cpuprofile de gperftools; mais dans mon outil, je veux prendre en charge les programmes liés dynamiquement (il est donc possible d'injecter ma propre bibliothèque dans le profilage init) et les programmes liés statiquement (sans possibilité de faire ^^^^^^).
Mon outil de profilage actuel fonctionne avec la mise en setitimer
juste après fork()
et avant exec()
, et il utilise également ptrace
pour obtenir le contrôle sur le programme cible et de pirater SIGPROF/SIGVPROF/SIGALRM généré par le setitimer
. Je n'ai aucune idée exacte de la façon dont cela fonctionne avec les programmes multithread.
est-ce la même chose pour freebsd et solaris? – osgx