デーモンとして実行されるクロスプラットフォームの 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 をシェル化/ラップする代わりに、syscall を使用することをお勧めします。もちろん、すでにこれを行っている他の Go ライブラリにも興味があります。
最終的に、私は次のようなものを探しています: http://nodejs.org/api/os.html
システムコールとその使用例を探しています。
間違った方向に向かっている場合は、お知らせください。私はシステム情報を得るためにカーネルをポーリングするという考えに固執していませんが、それがその情報を取得する最も信頼できる方法のように思えました。権限のないユーザーとしてアプリケーションを実行したいと思います。