LINUX.ORG.RU

История изменений

Исправление i-rinat, (текущая версия) :

Если в тестовой программке с fopen+fwrite не делать fclose, а сразу выходить, видно, что lseek вызывается. С fclose такого вызова уже нет. Возможно, дело в подчистке буферов, которая происходит во время вызова exit. Возможно, какие-то другие условия ещё влияют.

Дальше копать стало лениво, поэтому не копал. Если интересно, попробуй посмотреть в glibc. Но самым правильным будет всё же смотреть в текст стандарта на предмет взаимодействия FILE и fork.

Если хочешь гарантий по-быстрому, не используй файловые потоки Си, используй напрямую open/read/write/close.

Исходная версия i-rinat, :

Если в тестовой программке с fopen+fwrite не делать fclose, а сразу выходить, видно, что lseek вызывается. С fclose такого вызова уже нет. Возможно, дело в подчистке буферов, которая происходит во время вызова exit. Возможно, какие-то другие условия ещё влияют.

Дальше копать стало лениво, поэтому не копал. Если интересно, попробуй посмотреть в glibc. Но самым правильным будет всё же смотреть в текст стандарта на предмет взаимодействия FILE и fork.