質問

OSバージョン、ハードディスク容量、利用可能なディスク容量、C ++でLinuxシステムにインストールされたRAMなどの情報を取得しようとしています。 system()を使用してさまざまなLinuxコマンドを実行し、それらの出力をキャプチャできることは知っています(これは私が現在行っていることです)。オペレーティングシステムから情報を取得するために使用できるC ++標準ライブラリに何かありますか?

役に立ちましたか?

解決

システム経由で* nixコマンドを使用している場合。

次に、manページの一番下までmanスクロールすると、通常、関連するCシステムコールが関連するものが表示されます。

Example:  man uname:
SEE ALSO
       uname(2), getdomainname(2), gethostname(2)


Explanation of numbers:

(1): User UNIX Command
(2): Unix and C system calls
(3): C Library routines
(4): Special file names
(5): File formats
(6): 
(7):
(8): System admin commands

したがって、system(<!> quot; uname <!> quot;)を使用している場合。 manページから、uname Cシステムコール(uname(2))もあることがわかります。したがって、「man 2 uname」を実行して、Cシステムコールunameの使用方法に関する情報を取得できます。

他のヒント

これらの目的のためのC ++標準ライブラリには何もありません。使用できるライブラリはlibhalです。これは、プログラムのビューをハードウェアに抽象化し、/proc/sysなどからさまざまな情報を収集します。 HAL 、下にスクロールすると、非公式のC ++バインディングも利用できるようです(haven ' tはそれをテストしましたが、libhalはC ++プログラムでも動作します)。コマンドlshalを使用して、HALで利用可能なすべてのデバイス情報を表示します。

litbが示唆するように HAL を使用したくない場合は、 から直接読んでください。 / procファイルシステム(システムにある場合)。これは最もプラットフォームに依存しない方法ではなく、多くの場合、ファイルを分解するために少し解析する必要があります。

HALはこれらの詳細の多くを抽象化していると思いますが、ライブラリの使用がオプションでない場合は、/ procから直接読むことができることを知っているだけです。

システム情報は定義上、移植性がないため、標準的なソリューションはありません。最善の策は、ほとんどの作業を行うライブラリを使用することです。そのようなクロスプラットフォームライブラリの1つ(現在Linux固有のhalとは異なります)は、 SIGAR API です。 、これはオープンソースのBTWです。あまり問題なくC ++プロジェクトで使用しました(インストールは少し非標準ですが、簡単に理解できます)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top