我需要在 C 中获取当前进程的内存使用情况。有人可以提供如何在 Linux 平台上执行此操作的代码示例吗?
我知道 cat /proc/<your pid>/status
获取内存使用的方法,但我不知道如何在 C 中捕获它。
顺便说一句,这是我正在修改的 PHP 扩展(当然,我是 C 新手)。如果 PHP 扩展 API 中有可用的快捷方式,那将更有帮助。
原文由 scotts 发布,翻译遵循 CC BY-SA 4.0 许可协议
我需要在 C 中获取当前进程的内存使用情况。有人可以提供如何在 Linux 平台上执行此操作的代码示例吗?
我知道 cat /proc/<your pid>/status
获取内存使用的方法,但我不知道如何在 C 中捕获它。
顺便说一句,这是我正在修改的 PHP 扩展(当然,我是 C 新手)。如果 PHP 扩展 API 中有可用的快捷方式,那将更有帮助。
原文由 scotts 发布,翻译遵循 CC BY-SA 4.0 许可协议
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 许可协议
7 回答5.3k 阅读
4 回答4k 阅读
2 回答5.9k 阅读✓ 已解决
2 回答2.5k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
2 回答799 阅读✓ 已解决
1 回答3.3k 阅读
您始终可以像打开常规文件一样在
/proc
系统中打开“文件”(使用“自我”符号链接,因此您不必查找自己的 pid):当然,您现在必须解析文件以挑选出您需要的信息。