최근에 sysinfo 구조체의 freeram 변수가 반환되는 사용 가능한 RAM의 양을 반환하지 않는다는 것을 느낀 시스템 통계를 표시하기 위해 sysinfo systemcall을 사용하여 다음 C 코드를 작성했습니다. 현재의 RAM 사용법. totalram에서 freeram을 빼서 올바른 값을 표시하는 해결 방법을 사용해야했습니다. 이 특정 변수에 대해 인터넷 검색을 시도했지만 아무 소용이 없습니다. 이 이상한 행동에 대한 통찰력은 정말 도움이 될 것입니다.sysinfo 시스템 호출이 올바른 freeram 값을 반환하지 않음
/*
* 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