Я пишу программу для отслеживания каждого системного вызова, вызываемого дочерним процессом, и определения точного использования памяти (исключая совместное использование памяти).
вот мой план.
пусть дочерний процесс трассируется отцовским процессом,
если дочерний процесс выполняет системные вызовы, родительский процесс получит SIGTRAP,
затем получите идентификатор системного вызова с помощью ptrace(PTRACE_PEEKUSER, child_pid, 4*ORIG_EAX, NULL).
когда идентификатор равен SYS_brk, SYS_sbrk, SYS_mmap2, SYS_mmap, SYS_mremap, SYS_munmap,
я могу получить параметры вызова и рассчитать объем использования памяти.
но меня это беспокоит
Я не уверен, как рассчитать.
SYS_mmap2 имеет более 6 параметров, как мне их получить?
ps
? - person Dietrich Epp   schedule 27.02.2012libprocps4-dev
, и не читать вывод ps. - person Alexis Wilke   schedule 20.07.2016