J'essaie de lire la pile d'un processus enfant mais sans succès. Je sais qu'il est possible d'utiliser ptrace
, mais ptrace
l'interface de vous permet de lire un seul mot à la fois, et j'essaie de numériser une plus grande partie de la pile.
J'ai également essayé de lire les /proc/$pid/mem
limites de la pile extraites du /proc/$pid/maps
fichier après avoir d'abord utilisé ptrace pour y attacher (comme suggéré ici ) mais la lecture continue d'échouer (même lors de l'exécution en tant que root) bien que le même code réussisse lorsqu'il est essayé lecture de différentes parties du processus (par exemple, tas).
Qu'est-ce que je fais mal? Y a-t-il une autre option?
waitpid
entreptrace(PTRACE_ATTACH,…)
etread
(sinon il existe une condition de concurrence possible)? Quelle erreurread
revient? L'enfant fait-il quelque chose de particulier avec son mappage de mémoire - pouvez-vous essayer votre code avec un enfant simple commesleep
?