C中当前进程的内存使用情况

新手上路,请多包涵

我需要在 C 中获取当前进程的内存使用情况。有人可以提供如何在 Linux 平台上执行此操作的代码示例吗?

我知道 cat /proc/<your pid>/status 获取内存使用的方法,但我不知道如何在 C 中捕获它。

顺便说一句,这是我正在修改的 PHP 扩展(当然,我是 C 新手)。如果 PHP 扩展 API 中有可用的快捷方式,那将更有帮助。

原文由 scotts 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 639
2 个回答

您始终可以像打开常规文件一样在 /proc 系统中打开“文件”(使用“自我”符号链接,因此您不必查找自己的 pid):

 FILE* status = fopen( "/proc/self/status", "r" );

当然,您现在必须解析文件以挑选出您需要的信息。

原文由 CB Bailey 发布,翻译遵循 CC BY-SA 2.5 许可协议

getrusage 库函数返回一个结构,其中包含有关当前进程的大量数据,包括:

 long   ru_ixrss;         /* integral shared memory size */
long   ru_idrss;         /* integral unshared data size */
long   ru_isrss;         /* integral unshared stack size */

但是,最新的 linux 文档说明了这 3 个字段

(unmaintained) This field is currently unused on Linux

然后手册将其定义为:

并非所有字段都已填写;内核将未维护的字段设置为零。 (提供未维护的字段是为了与其他系统兼容,并且有一天它们可能会在 Linux 上得到支持。)

参见 getrusage(2)

原文由 caf 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题