Анализ /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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