10

さまざまなシステム情報 (パーティションの空き容量、ノートパソコンのバッテリー情報など) を収集して送信するアプリを開発中です。この情報を直接のC ++ APIの形式で取得することにあまり成功していませんが、/ proc(または同様のもの)のファイルを介してすべて利用できます。

C++ アプリでこれらのファイルを読み取り/解析することが、この情報を取得する適切な方法なのか、それとも API を発見しようとし続ける必要があるのか​​ 疑問に思っていますか? (注: 私は statvfs を使用しています)。

これまでのところ、この種の情報は Win32 の方が簡単に収集できるようです。奇妙に思えます。

4

3 に答える 3

6

以下の優先順位に従って API を使用することは、断然ベスト プラクティスです。

  • 言語 API (ここではあまり役に立ちませんが、文字列については、Posix やその他の OS 標準で指定されたライブラリ文字列機能よりも C99 文字列関数を使用する方が適しています)。

  • Posix オペレーティング ソフトウェア API

  • 文書化されたカーネル API

  • 文書化されていないカーネル API (少なくとも、変更すると ioctl ユーザーが壊れてしまうため、おそらく変更されないでしょう)

  • /proc

  • /dev/kmem/dev/mem

/procトローリングが移植可能であるとか、リリースごとに同じであると信じる理由はありません。すべてのシステムが/procマウントされているわけではありません!

そうは言っても、何かをこすり落とす方はるかに簡単で、それが/proc唯一の利用可能なインターフェースである場合は、先に進んでそれを使用する必要があります.qa

最後に、最後の 2 つの順序は完全には明確で/procはありません。これは、死後のカーネル クラッシュ ダンプ分析に使用できないためです。ただし、コア ダンプを覗くことができるツールは引き続き機能します。

于 2011-01-10T20:46:09.587 に答える
1

/proc は API だと思いました (すべてがファイルです...)

于 2011-01-10T20:37:47.827 に答える
0

お気づきのように、多くのLinuxシステム情報がにあり/procます。そして、その情報を取得するためのC APIがないことが多いのは正しいです(ただし、C ++の代わりにbashを使いたい場合は、通常、シェルコマンドがあります)。最悪のシナリオでは、解析が滞る可能性が/procありますが、必要な特定のアイテムのオープンソースシェルコマンドの形式でサンプルコードを取得できる場合があります。

于 2011-01-10T20:14:23.840 に答える