Получить / proc /<pid>/ map info с помощью вызова sysctl под mac os
Я хотел использовать /proc/<pid>/map
каталог для получения информации о виртуальной памяти процесса (особенно о его разделяемых библиотеках). Так как у Mac OS его нет, я пытаюсь найти другие способы. Один из них, кажется, sysctl
позвоните, но я не совсем понимаю, как использовать его для этой цели. Есть ли примеры? Я знаю, что это также может быть сделано через некоторые mach_vm
интерфейсные вызовы, но документация вполне залить. Может быть, вы знаете какие-либо другие способы чтения памяти процесса? Кстати, моя версия для Mac - Дарвин. Примечание: цель состоит в том, чтобы сделать это без использования каких-либо утилит или fork/exec
звонки. Я тоже не хочу pseudofs
быть установленным.
1 ответ
Подсистема виртуальной памяти macOS находится в унаследованной от Mach части ядра, поэтому эти API, безусловно, должны использоваться. Для проверки регионов посмотрите на mach_vm_region()
(называется vm_region
в оригинальном Mach- вы найдете больше документации для этого), для чтения памяти, используйте mach_vm_read()
,
Вы также можете найти vmmap
Утилита командной строки пригодится для исследования.