LINUX.ORG.RU

Глюки с fwrite


0

1

Словил пару раз глюк: Есть файл, открытый как f = fopen(FileName, «a+b»); В файл пишутся данные fwrite(&data.val, sizeof(data.val), 1, f); val имеет тип u_int64_t При этом периодически в файле начинают встречаться записи не по 8 байт, а по 9 байт. и во всех случаях в этих записях встречается \r\n

Т.е. как я понял при fwrite если во входных данных встречается \n, то в файл записывается \r\n

Запись производится только из одного потока. Чтение не используется. Периодически используется fflush(f);

Система: Linux Debian-60-squeeze-64-minimal 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 GNU/Linux

Такое ощущение что иногда игнорируется тот факт что файл открыт в двоичном режиме. При этом специально спровоцировать глюк не удаётся в тестовой программе.



Последнее исправление: slesh (всего исправлений: 1)

>В файл пишутся данные fwrite(&data.val, sizeof(data.val), 1, f); val имеет тип u_int64_t

А больше в файл точно ничего не пишется?

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

Вот же шайтанмашина. Проблему решил. Данный файл - это двоичный лог, но имел расширение txt (по расширению связанного с ним текстового файла), и при передачи файла(между серверами) на обработку, из-за txt расширения, файл передавался как текстовый и на каком-то этапе \n заменялось на \r\n

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