Анализ /proc/meminfo с использованием read() в C дает неправильные значения ОЗУLinux

Anonymous
Анализ /proc/meminfo с использованием read() в C дает неправильные значения ОЗУ

Сообщение Anonymous »

Я пытаюсь извлечь MemTotal и MemFree из /proc/meminfo с помощью open() и read() (не используя fgets() или scanf()).
Однако значения иногда неверны или очень велики.
Общий объем памяти в КБ: 1575626486920
Свободной памяти в КБ: 6622208
Процент использования: 99%
Общий объем памяти явно неправильный.
Что я ожидаю:
Правильные значения, например:
MemTotal: 16384256 КБ
#include
#include
#include
#include
#include

int main(int argc, char const *argv[])
{
int fd = 0;
int iRet = 0;
char Buffer[1024];

memset(Buffer, '\0', sizeof(Buffer));

char *total = "MemTotal:";
char *free = "MemFree:";
char *start1 = total;
char *start2 = free;

fd = open("./meminfo", O_RDONLY);

if(fd == -1)
{
return -1;
}

int flag = 0;
unsigned long totalbytes = 0;
long freebytes = 0;

while((iRet = read(fd, Buffer, 1024)) > 0)
{
for(int i = 0; i < iRet; i++)
{
if(flag == 0)
{
if(*start1 == Buffer)
{
start1++;

if(*start1 == '\0')
{
flag = 1;
}
}
else
{
start1 = total;
}
}
else if(flag == 1)
{
if(Buffer == ' ')
{
continue;
}

if(Buffer >= '0' && Buffer = '0' && Buffer

Подробнее здесь: https://stackoverflow.com/questions/798 ... ram-values

Вернуться в «Linux»