我正在编写一个作为守护进程运行的跨平台 Go 应用程序。它基本上侦听文件系统上的更改并将更改复制/下载到/从服务器。这个想法是它永远不应该减慢机器的速度,让任务排队直到机器空闲。
为此,我想监控 CPU、RAM 和网络使用情况,但网络使用情况(如果可能)。我目前的目标是 Windows 7+、Mac OS 10+ 和 Linux 3+。
我主要是一名 Linux 程序员,所以我不熟悉 Windows/BSD API,但我已经找到了一些关于 BSD 的好信息,所以我想我可以弄清楚。我在追踪 Windows 系统调用时遇到了麻烦(我不知道获取 Windows 手册页的方法......)。我设法找到了这些资源(适用于 Windows):
- http://msdn.microsoft.com/en-us/library/ms724400%28VS.85%29.aspx
- http://www.philosophicalgeek.com/2009/01/03/determine-cpu-usage-of-current-process-c-and-c/
- http://msdn.microsoft.com/en-us/library/windows/desktop/aa373083%28v=vs.85%29.aspx
- 是否可以从脚本中知道 cpu 利用率
我更喜欢使用系统调用而不是封装/包装 C++ API。显然,我会对已经这样做的任何其他 Go 库感兴趣。
最终,我正在寻找这样的东西:http ://nodejs.org/api/os.html
我几乎在寻找系统调用和如何使用它们的示例。
如果我走错了方向,请告诉我。我不赞成轮询内核以获取系统信息的想法,但在我看来,这似乎是获取该信息的最可靠方法。我更愿意以弱势用户身份运行该应用程序。