Перезапись уже созданного файла, как это сделать |
Здравствуйте, гость ( Вход | Регистрация )
Перезапись уже созданного файла, как это сделать |
AD |
17.4.2012, 9:27
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Стоит следующая задачка. Сделать кольцевой файл - наподобие кольцевого буфера. В принципе уже все сделал. Но есть одна проблема: я возвращаю счетчик позиции в начало файла, с помощью lseek перевожу на начало файла, но самой перезаписи не вижу. То есть в итоге получается файл, в котором в начале вижу то, что записал сначала, а перезаписи не вижу. Может ошибка в каких-то флагах? Все делается с помощью POSIX функций.
|
|
|
maint |
17.4.2012, 9:39
Сообщение
#2
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
Стоит следующая задачка. Сделать кольцевой файл - наподобие кольцевого буфера. В принципе уже все сделал. Но есть одна проблема: я возвращаю счетчик позиции в начало файла, с помощью lseek перевожу на начало файла, но самой перезаписи не вижу. То есть в итоге получается файл, в котором в начале вижу то, что записал сначала, а перезаписи не вижу. Может ошибка в каких-то флагах? Все делается с помощью POSIX функций. с помощью каких POSIX функций ? От функций и флаги зависят |
|
|
AD |
17.4.2012, 9:49
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
maint |
17.4.2012, 10:30
Сообщение
#4
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
|
|
|
AD |
17.4.2012, 10:41
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
maint |
17.4.2012, 11:07
Сообщение
#6
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
для перезаписи O_RDWR. И проверять код возврата из lseek, как и из write. Может и не было смещения и записи Блин. Ну я не маленький все же. Уж такие вещи я точно знаю! Конечно, это первое, что проверил! Смещение в файле происходит! а что вы хотели что бы я нашел без текста программы . Была хохмочка в свое время, были отличия у open у фряхи и линуха. Но на другом уровне, на fopen. fsync можно попробовать. Но если close выполняется, по моему бессмысленно. Как и setbuf. Все же хочу спросить write возвращает именно нужное кол-во записанных байт ? Сообщение отредактировал maint - 17.4.2012, 11:08 |
|
|
Текстовая версия | Сейчас: 25.11.2024, 14:26 |