Я хочу прочитать последние n байтов файла proc/proc // status.как читать последние n байтов из файла proc в C
На обычных файлов, я могу FSEEK с конца файла, как:
fseek(proc_file, -BUF_SIZE, SEEK_END);
, но так как файл прок имеет нулевой размер, это не работает.
Любые предложения о том, как читать с конца?
Я бы определенно хотел избежать петли до конца.
Я бы поставил 1024 байта, должно быть достаточно. Я сделал 'для файла в $ (ls -1/proc | egrep '^ [0-9] + $'); do wc -c/proc/$ file/status 2>/dev/null; сделано | sort -n' в моей системе и минимум был 532, а максимальный - 850. Возможно, ошибаться на консервативной стороне и делать 4096. – mpontillo
Буферизация WRT: это верно для нормальных файловых систем, но * не * true для procfs. Он не поддерживается блочным устройством, поэтому кэширования нет. Операции чтения выполняются непосредственно ядром. – duskwuff
@Mike Я видел, как он переходил на 1k специально на кластеры, но да, я тоже в итоге использую 4k. –