如何使用 linux 系统调用编写一个 c 程序,它提供有关可用内存、已用内存、内核版本的输出?

How to write a c++ program using linux system call which gives output about free memory, used memory, kernel version?

在Linux系统上,使用C程序,我需要想办法打印出以下信息:

  • 正在使用的内存量。
  • 可用内存量
  • Linux 内核版本。
  • 谁能帮我解决这个问题?

    谢谢。


    您可以使用 proc(5) 文件系统(它特定于 Linux)。您可能会顺序读取 /proc/meminfo/proc/version (这些伪文件应该顺序读取,而且速度很快,不涉及任何磁盘 IO)。您也可以使用 uname(2) 作为内核版本。

    如果要查询自己进程的虚拟内存,请使用 /proc/self/maps

    如果您需要有关 malloc(3) 的信息,请使用 malloc_info(3), mallinfo(3), malloc_stats(3), ...

    mlwn 的评论也正确地提到了 sysconf(3)

    另见 linuxatemyram。并阅读高级 Linux 编程

    可以限制已使用(或可用)的内存,请参阅此答案。使用 getrlimit(2) 查询资源限制。

    PS。您提到的正在使用的内存量非常含糊!还要注意 syscalls(2) 与 system(3)

    不同