我有一个C程序打印一些系统统计信息.
#include <sys/sysinfo.h>
#include <stdio.h>
int main() {
int days, hours, mins;
struct sysinfo sys_info;
if(sysinfo(&sys_info) != 0)
perror("sysinfo");
// Uptime
days = sys_info.uptime / 86400;
hours = (sys_info.uptime / 3600) - (days * 24);
mins = (sys_info.uptime / 60) - (days * 1440) - (hours * 60);
printf("Uptime: %ddays, %dhours, %dminutes, %ldseconds\n",
days, hours, mins, sys_info.uptime % 60);
// Load Averages for 1,5 and 15 minutes
printf("Load Avgs: 1min(%ld) 5min(%ld) 15min(%ld)\n",
sys_info.loads[0], sys_info.loads[1], sys_info.loads[2]);
printf("Total Ram: %lluk\tFree: %lluk\n",
sys_info.totalram …Run Code Online (Sandbox Code Playgroud) 如何发现最终用户的系统性能设置(视觉效果等)?我想让我的WPF应用程序与这些设置兼容.
是否有任何标准例程可以执行此操作,还是只需读取sysinfo?
要在linux中找到平均负载,我使用sys/sysinfo.h,其中包括linux/kernel.h,其中定义了以下结构:
struct sysinfo {
long uptime; /* Seconds since boot */
unsigned long loads[3]; /* 1, 5, and 15 minute load averages */
unsigned long totalram; /* Total usable main memory size */
unsigned long freeram; /* Available memory size */
unsigned long sharedram; /* Amount of shared memory */
unsigned long bufferram; /* Memory used by buffers */
unsigned long totalswap; /* Total swap space size */
unsigned long freeswap; /* swap space still available */
unsigned short procs; …Run Code Online (Sandbox Code Playgroud) 我正在尝试检索我的Go应用程序的当前正常运行时间。
我已经看到有一个包syscall提供了type Sysinfo_t一个方法Sysinfo(*Sysinfo_t),它显然允许您检索正常运行时间(因为它是Sysinfo_t结构的一个字段)
到目前为止我所做的是:
sysi := &syscall.Sysinfo_t{}
if err := syscall.Sysinfo(sysi); err != nil {
return http.StatusInternalServerError, nil
}
Run Code Online (Sandbox Code Playgroud)
问题是在编译时我得到了这个:
/path/to/file/res_system.go:43: undefined: syscall.Sysinfo_t
/path/to/file/res_system.go:45: undefined: syscall.Sysinfo
Run Code Online (Sandbox Code Playgroud)
我已经搜索了一点,显然该方法和类型仅在 Linux 上可用,我需要该应用程序在 Linux 和 OsX(我目前正在使用)上运行。
是否有一种交叉兼容的方式来检索应用程序正常运行时间?
注意:我宁愿不使用任何第三方库(除非它们是绝对必要的)
sysinfo.h在Linux中是否有任何Mac OS X等效头文件.我正在将代码从Linux移植到Mac但是struct sysinfo找不到结构.
编辑:==更多信息==在Linux平台上,我使用的是一个<sys/sysinfo.h>在Mac中找不到的头文件.通过在Linux中包含标头,我执行以下操作:
struct sysinfo s;
sysinfo(&s);
结果给了我一些系统相关的信息.现在,当我将项目从Linux移植到Mac时,我想知道Mac是否有任何类似的功能.
请帮忙.
提前致谢.
我在 golang 中有一些 Linux 代码:
import "syscall"
var info syscall.Sysinfo_t
err := syscall.Sysinfo(&info)
totalRam := info.Totalram
Run Code Online (Sandbox Code Playgroud)
我想将其移植到 Mac OS X。我看到 Sysinfo 在 Linux 上可用,但在 Mac 上不可用:
Linux:
$ go list -f '{{.GoFiles}}' syscall | sed -e "s/[][]//g" | xargs fgrep --color -Iwn Sysinfo
syscall_linux.go:962://sysnb Sysinfo(info *Sysinfo_t) (err error)
zsyscall_linux_amd64.go:822:func Sysinfo(info *Sysinfo_t) (err error) {\
Run Code Online (Sandbox Code Playgroud)
苹果电脑:
$ go list -f '{{.GoFiles}}' syscall | sed -e "s/[][]//g" | xargs fgrep --color -Iwn Sysinfo
# No results
Run Code Online (Sandbox Code Playgroud)
在 Mac 上获取系统 RAM 信息的正确方法是什么?