最近sysinfoシステムコールを使用してシステム統計情報を表示すると、sysinfo構造体のfreeram変数が空きRAM量を返さない現在のRAM使用量私はtotalramからfreeramを差し引いて正しい値を表示するための回避策を使用しなければなりませんでした。私はこの特定の変数についてグーグルで試してみましたが、無駄です。この奇妙な行動の洞察は本当に役に立ちます。sysinfoシステムコールが正しいフリーラーム値を返さない
/*
* C program to print the system statistics like system uptime,
* total RAM space, free RAM space, process count, page size
*/
#include <sys/sysinfo.h> // sysinfo
#include <stdio.h>
#include <unistd.h> // sysconf
#include "syscalls.h" // just contains a wrapper function - error
int main()
{
struct sysinfo info;
if (sysinfo(&info) != 0)
error("sysinfo: error reading system statistics");
printf("Uptime: %ld:%ld:%ld\n", info.uptime/3600, info.uptime%3600/60, info.uptime%60);
printf("Total RAM: %ld MB\n", info.totalram/1024/1024);
printf("Free RAM: %ld MB\n", (info.totalram-info.freeram)/1024/1024);
printf("Process count: %d\n", info.procs);
printf("Page size: %ld bytes\n", sysconf(_SC_PAGESIZE));
return 0;
}
'info.freeram'は私の箱で正しく動作します。 '' syscalls.h "'を取り除く。 –
syscalls.hは、とにかくコードに影響を与えることはできません。以下の@shadyabhiの答えを見てください。 – k4rtik