Mac OS X相当于Linux中`sysinfo.h`的头文件

7
有没有在Mac OS X中与Linux中的sysinfo.h等效的头文件?我正在将代码从Linux移植到Mac,但找不到结构体struct sysinfo
编辑:==更多信息== 在Linux平台上,我使用一个头文件<sys/sysinfo.h>,但在Mac上找不到。 通过在Linux中包含此头文件,我执行以下操作: struct sysinfo s; sysinfo(&s); 结果会给出一些系统相关信息。 现在,由于我正在将项目从Linux移植到Mac,我想知道是否有类似的功能可用于Mac。
请帮忙。
提前致谢。

你可能更好地询问如何实现你的最终目标,而不是询问 Linux 头文件在 OS X 中的等效物。 - mttrb
我编辑了我的帖子...你能再看一遍吗?谢谢你的帮助。 - pcbabu
你想获取什么信息?加载、运行时间、内存使用等? - mttrb
这些是Linux返回的数值。我能在Mac上获取这些值或其中一些值吗?再次感谢。 - pcbabu
1
我认为@duskwuff已经告诉你如何访问Linux上由sysinfo返回的几乎所有信息。 - mttrb
1个回答

15

sysinfo在Mac OS X中最接近的等效物是sysctl/ MIB。它不会直接返回sysinfo结构,但该结构中的大多数值都可以作为sysctl键使用。例如:

  • uptime 可以通过 kern.boottime 近似计算(尽管这反映的是实际启动时间,而不是运行时间)
  • loads 可以通过 vm.loadavg 获得
  • totalram = hw.memsize(以字节为单位)
  • freeramsharedrambufferram 比较复杂,因为 XNU 内存管理器与 Linux 的工作方式不同。我不确定最接近的等效值(“活动”和“非活动”内存)是否被公开。
  • totalswapfreeswap 反映在 vm.swapusage 中。(但请注意,OS X 动态分配交换空间。)
  • procs 似乎没有任何等效项。
  • totalhighfreehigh 是特定于 i386 Linux 的。

你能解释一下我如何从C程序中访问这些数据吗? - Jon Weinraub
使用libSystem中的sysctlbyname()函数。 - user149341

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接