С++ чтение файла который меняется другим потоком

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Arnowt
Сообщения: 166
Зарегистрирован: 2013.09.13, 11:11

С++ чтение файла который меняется другим потоком

Сообщение Arnowt » 2019.07.14, 19:30

Нужно читать температуру процессора, делаю примерно так:

Код: Выделить всё

        for (int i = 1; i <= 5; i++) {
            ifstream file("/sys/class/hwmon/hwmon0/temp" + to_string(i) + "_input");
            if (file) {
                file >> tmp;
                file.close();
                temp = tmp > temp ? tmp : temp;
            }
        }
Оно работает, однако этот блок нужно выполнять достаточно часто и хотелось бы убрать постоянные открытия и закрытия файлов.
Но проблема в том, если не переоткрывать файлы, что реальное чтение происходит только в первый раз(видимо буфер), а дальше проходит загрузка одних и тех же циферок. Чет ничего нагуглить не удалось.
Кто-то сталкивался и как решали?

Arnowt
Сообщения: 166
Зарегистрирован: 2013.09.13, 11:11

Re: С++ чтение файла который меняется другим потоком

Сообщение Arnowt » 2019.07.14, 20:44

сам себе отвечу )
нужно смещать указатель в начало

Код: Выделить всё

file[i].seekg(0, ios::beg);
Сбило столку что вместо пустой строки, в переменную приходило старое значение.

Ответить