Я пытаюсь извлечь 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