История изменений
Исправление 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.