我正在开发一个嵌入式 Linux 系统(2.6 内核和 uclibc),我需要检查 CPU、内存、网络、NAT 表使用情况等...
我应该使用哪个 API?我在哪里可以检查它?我访问了一些有关 Linux 内核 API 的网站,但没有找到任何有关的直接信息。有什么建议或建议吗?
我的程序是用 uclibc 和 gcc 3.4.6 用 C 编写的
谢谢
我正在开发一个嵌入式 Linux 系统(2.6 内核和 uclibc),我需要检查 CPU、内存、网络、NAT 表使用情况等...
我应该使用哪个 API?我在哪里可以检查它?我访问了一些有关 Linux 内核 API 的网站,但没有找到任何有关的直接信息。有什么建议或建议吗?
我的程序是用 uclibc 和 gcc 3.4.6 用 C 编写的
谢谢
您需要的所有信息(以及更多信息)都可以在 procfs 中找到:
/proc/uptime
,/proc/stat
/proc/meminfo
/proc/net/dev
/proc/net/ip_conntrack
顺便说一句:GCC 3.4.6 已经很老了。当前维护的最旧版本是 4.4;如果可能的话,我建议升级。Buildroot将为您自动化很多过程。
proc 文件系统相当理想:它是一个虚拟文件系统,其中所有内容实际上都是在读取时创建的。因此,如果没有人读取信息,则不会生成它。
基于文本文件的界面的美妙之处在于它同时具有人类可读性和机器可读性。其次,不存在字节序问题之类的问题——它在跨架构时效果更好。与为 V4L 和 ALSA 等少数子系统运行的 ioctls 相比,它具有编译器(例如#pragma pack)和独立于 ABI 的优点 - 如果您喜欢恐怖故事,请向 ARM 开发人员询问 OABI 到 EABI 的变化...
请注意,procfs 和 sysfs 的内容被认为是稳定内核接口的一部分,不允许开发人员随意更改任何内容。