Автоматическое смещение файла c изменено на 0 или осталось без изменений.
Если смещение файла остается неизменным, что происходит, когда read() или write() после truncate().
read()
write()
truncate()
как смещение файла read () или write () изменяется при усечении файла
Смещение файла открытых дескрипторов файла остается неизменным [1] .
что происходит, когда read () или write () после truncate ().
read():
write():
[1] с усечение posix :
Если файл ранее был больше длины, лишние данные отбрасываются. Если файл ранее был короче длины, его размер увеличивается, а расширенная область выглядит так, как будто она заполнена нулями. Функция truncate () не должна изменять смещение файла для любых связанных описаний открытых файлов. с файлом.
Если файл ранее был больше длины, лишние данные отбрасываются. Если файл ранее был короче длины, его размер увеличивается, а расширенная область выглядит так, как будто она заполнена нулями.
Функция truncate () не должна изменять смещение файла для любых связанных описаний открытых файлов. с файлом.
[2] From posix lseek :
Функция lseek () разрешает файл смещение, устанавливаемое за пределы конца существующих данных в файле. Если в этот момент данные записываются позже, последующее чтение данных в промежутке должно возвращать байты со значением 0, пока данные фактически не будут записаны в промежуток.
[3] С posix read :
Передача данных после текущего конца файла не производится. Если начальная позиция находится в конце или после конца файла, возвращается 0.
[4] И из posix write :
После успешного завершения записи () в обычный файл : Любое успешное чтение () из каждой позиции байта: в файле, который был изменен этой записью, должен возвращать данные, указанные в записи () для этой позиции, до тех пор, пока такие позиции байта не будут снова изменены.
После успешного завершения записи () в обычный файл :
То же самое, когда вы пытаетесь опубликовать конец файла - запись расширяет его, а чтение не удается. Поскольку операционные системы и файловые системы являются наиболее несовместимым программным обеспечением в мире, ни один ответ не избавит вас от попытки его опробовать.