LINUX.ORG.RU

fopen и fflush


0

0

Мне нужно открыть файл (/proc/stat) и раз в секунду читать из него данные. Я открываю его fopen("/proc/stat", "r") и затем периодически делаю fseek и fgets.

Проблема в следующем, данные которые я читаю не обновляются, то есть fgets читает те строки, которые были при первом открытии файлы. Казалось бы проблема решается с помощью fflush, но посмотрев исходники torsmo и concky, я увидел, что там этот же файл просто открывается и затем тем же fgets периодически читаются данные без всяких fflush. Как такое может быть?

И еще вопрос, что будет накладнее - раз в секунду делать fflush-fseek-fgets или fopen-fgets-fclose?

★★★★★
Ответ на: комментарий от anonymous

> может man setbuf

Так вот в conky ничего такого нет и все работает

init ★★★★★
() автор топика
Ответ на: комментарий от Die-Hard

> 1. fflush для fgets -- не помощник;

После подстановки fflush - все заработало

> 2. Я бы не стал пользоваться stdio для чтения из proc.

А какие есть альтернативы? open?

init ★★★★★
() автор топика
Ответ на: комментарий от cvv

>>чето у меня такое чувство что /proc/stat не поддерживает seek, хотя хз ..

>у меня такоеже

Сейчас работает с fflush и с fseek - все нормально.

init ★★★★★
() автор топика
Ответ на: комментарий от init

init:

> После подстановки fflush - все заработало

Странно...

man fflush:

The function fflush forces a write of all user-space buffered data for the given output or update stream via the stream's underlying write function. The open status of the stream is unaffected.

>> 2. Я бы не стал пользоваться stdio для чтения из proc.

>А какие есть альтернативы? open?

Ну да.

stdio -- вещь в себе...

Die-Hard ★★★★★
()
Ответ на: комментарий от Die-Hard

>> После подстановки fflush - все заработало

>Странно...

Понимаю, что странно, но почему-то работает.

init ★★★★★
() автор топика
Ответ на: комментарий от lg

а нет, поддерживает, токо что проверил, .. надежнее всего будет всетаки каждый раз файл переоткрывать мне кажется .. каким боком fflush() влияет на чтение - хз

lg ★★
()

А как насчет второго вопроса про накладные расходы? Как лучше делать?

init ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.