Linuxでメモリ情報を得るソースコード

Powered by dKingyo Visual C++ | Python | TOEIC 突破 | ツクール | 自作パソコン

 Win32APIの場合、システムの情報を得る場合は専用のAPIがあるが、HDBENCH cloneのソースコードを見る限り、fopenやpopenでproc/***infoやsysctlのプロセスから出力される値をパースして利用するらしい。
 しかし、私の環境だとパース部分が間違っているようで表示される値が全く違う。これは欠陥だ。おそらく昔のディストリビューションでは正しく動いたのだろうと思う。

 とりあえず、イディオムをメモ


メモリを情報取得
meminfoで

fp = fopen("/proc/meminfo","r");
if(fp){
 //なにか操作して、close
 fclose(fp);
}

sysctlで

fp = fopen("/sbin/sysctl hw.physmem hw.usermem","r");
if(fp){
 fscanf(fp,"%*s %d",totalmem);
 fscanf(fp,"%*s %d",freemem);
 //なにか操作して、close
 fclose(fp);
}