Go语言使用CGO获取Windows的CPU使用率
2016-01-25 09:55
666 查看
package main /* #include <windows.h> #include <stdio.h> #include <conio.h> double FileTimeToDouble(FILETIME* pFiletime) { return (double)((*pFiletime).dwHighDateTime * 4.294967296E9) + (double)(*pFiletime).dwLowDateTime; } double m_fOldCPUIdleTime; double m_fOldCPUKernelTime; double m_fOldCPUUserTime; BOOL Initialize() { FILETIME ftIdle, ftKernel, ftUser; BOOL flag = FALSE; if (flag = GetSystemTimes(&ftIdle, &ftKernel, &ftUser)) { m_fOldCPUIdleTime = FileTimeToDouble(&ftIdle); m_fOldCPUKernelTime = FileTimeToDouble(&ftKernel); m_fOldCPUUserTime = FileTimeToDouble(&ftUser); } return flag; } int GetCPUUseRate() { int nCPUUseRate = -1; FILETIME ftIdle, ftKernel, ftUser; if (GetSystemTimes(&ftIdle, &ftKernel, &ftUser)) { double fCPUIdleTime = FileTimeToDouble(&ftIdle); double fCPUKernelTime = FileTimeToDouble(&ftKernel); double fCPUUserTime = FileTimeToDouble(&ftUser); nCPUUseRate= (int)(100.0 - (fCPUIdleTime - m_fOldCPUIdleTime) / (fCPUKernelTime - m_fOldCPUKernelTime + fCPUUserTime - m_fOldCPUUserTime)*100.0); m_fOldCPUIdleTime = fCPUIdleTime; m_fOldCPUKernelTime = fCPUKernelTime; m_fOldCPUUserTime = fCPUUserTime; } return nCPUUseRate; } int cpu() { if (!Initialize()) { getch(); return -1; } else { Sleep(1000); return GetCPUUseRate(); } return -1; } */ import "C" import ( "fmt" ) func main() { for { cpu := C.cpu() fmt.Printf("\r%d%%", cpu) } }
相关文章推荐
- Go 语言 Channel 实现原理精要
- Go语言将支持Android
- SQLSERVER 中GO的作用详解
- Golang实现的聊天程序服务端和客户端代码分享
- Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结
- 在Go语言程序中使用gojson来解析JSON格式文件
- 举例详解Go语言中os库的常用函数用法
- Go语言中函数的参数传递与调用的基本方法
- GO语言异常处理机制panic和recover分析
- 深入解析Go语言的io.ioutil标准库使用
- GO语言的IO方法实例小结
- Go语言的os包中常用函数初步归纳
- go语言执行windows下命令行的方法
- Go语言计算两个经度和纬度之间距离的方法
- Go语言排序与接口实例分析
- Go语言导出内容到Excel的方法
- go语言实现sqrt的方法
- Go语言中数组的基本用法演示
- Go语言MessageBox用法实例
- Go语言判断指定文件是否存在的方法