2015-12-21 43 views
1

我试图获取另一个进程使用的内存。从我读过的内容看来,我需要使用mach_vm_regeion。我在随机论坛上发现了一些代码,并尝试编译以确保我理解它是如何工作的,但是我得到这个错误。OS X以编程方式获取进程的内存

error: use of undeclared identifier 'mach_vm_region' 
     kret = mach_vm_region(task, &address, &size, VM_REGION_BASIC_INFO, (vm_regio... 
      ^
1 error generated. 

我在OS X 10.11.2上编译使用clang++ --std=c++11 file.cpp

clang --version回报

Apple LLVM version 7.0.2 (clang-700.1.81) 
Target: x86_64-apple-darwin15.2.0 
Thread model: posix 
+0

http://www.sagenb.org/src/misc/darwin_memory_usage.c是否使用了正确的包含? – pvg

+0

对不起,我完全忘了添加一段代码。我相信我有所有适当的包括。这里是http://pastie.org/10644474 – janovak

回答

2

您没有正确的包含。我发现

#include <mach/mach.h> 
#include <mach/mach_vm.h> 

的作品。您还需要更改:vm_size_t sizemach_vm_size_t size,这是函数期望的类型。然后它按预期编译和工作(当以root身份运行时,如注释所示)。

相关问题