![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
AD |
![]()
Сообщение
#1
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Стоит следующая задачка. Сделать кольцевой файл - наподобие кольцевого буфера. В принципе уже все сделал. Но есть одна проблема: я возвращаю счетчик позиции в начало файла, с помощью lseek перевожу на начало файла, но самой перезаписи не вижу. То есть в итоге получается файл, в котором в начале вижу то, что записал сначала, а перезаписи не вижу. Может ошибка в каких-то флагах? Все делается с помощью POSIX функций.
|
|
|
maint |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(AD @ 17.4.2012, 15:27) Link Стоит следующая задачка. Сделать кольцевой файл - наподобие кольцевого буфера. В принципе уже все сделал. Но есть одна проблема: я возвращаю счетчик позиции в начало файла, с помощью lseek перевожу на начало файла, но самой перезаписи не вижу. То есть в итоге получается файл, в котором в начале вижу то, что записал сначала, а перезаписи не вижу. Может ошибка в каких-то флагах? Все делается с помощью POSIX функций. с помощью каких POSIX функций ? От функций и флаги зависят |
|
|
AD |
![]()
Сообщение
#3
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(maint @ 17.4.2012, 10:39) Link с помощью каких POSIX функций ? От функций и флаги зависят open, close, write, read, lseek |
|
|
maint |
![]()
Сообщение
#4
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(AD @ 17.4.2012, 15:49) Link Цитата(maint @ 17.4.2012, 10:39) Link с помощью каких POSIX функций ? От функций и флаги зависят open, close, write, read, lseek для перезаписи O_RDWR. И проверять код возврата из lseek, как и из write. Может и не было смещения и записи |
|
|
AD |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(maint @ 17.4.2012, 11:30) Link для перезаписи O_RDWR. И проверять код возврата из lseek, как и из write. Может и не было смещения и записи Блин. Ну я не маленький все же. Уж такие вещи я точно знаю! ![]() ![]() ![]() |
|
|
maint |
![]()
Сообщение
#6
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(AD @ 17.4.2012, 16:41) Link Цитата(maint @ 17.4.2012, 11:30) Link для перезаписи O_RDWR. И проверять код возврата из lseek, как и из write. Может и не было смещения и записи Блин. Ну я не маленький все же. Уж такие вещи я точно знаю! ![]() ![]() ![]() а что вы хотели что бы я нашел без текста программы ![]() Сообщение отредактировал maint - 17.4.2012, 11:08 |
|
|
AD |
![]()
Сообщение
#7
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(maint @ 17.4.2012, 12:07) Link а что вы хотели что бы я нашел без текста программы ![]() Вопрос, как мне казалось, не требовал кода. Уровень вопроса, на мой взгляд, подобен вопросу в предыдущей теме, когда можно подсказать без кода! Кол-во байт write возвращает правильное! Сообщение отредактировал AD - 17.4.2012, 11:28 |
|
|
maint |
![]()
Сообщение
#8
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
работает 100 пудов, только проверил. Пишет в начало файла |
|
|
AD |
![]()
Сообщение
#9
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(maint @ 17.4.2012, 12:58) Link работает 100 пудов, только проверил. Пишет в начало файла По-моему, у функции lseek параметры надо поменять местами. Вот так:
А куда Вы пишете? В файл самой программы что-ли? А.... Понял.... Блин. Ваш код проверил. Работает. У меня чего-то не удается. Буду разбираться!!! Сообщение отредактировал AD - 17.4.2012, 12:13 |
|
|
maint |
![]()
Сообщение
#10
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(AD @ 17.4.2012, 18:24) Link Цитата(maint @ 17.4.2012, 12:58) Link работает 100 пудов, только проверил. Пишет в начало файла По-моему, у функции lseek параметры надо поменять местами. Вот так:
А куда Вы пишете? В файл самой программы что-ли? А.... Понял.... Блин. Ваш код проверил. Работает. У меня чего-то не удается. Буду разбираться!!! в первый аргумент вызова open(argv[1]). Сама программа argv[0]. Ага параметры ошибся. Но не принципиально. SEEK_SET все равно нулю равен. Проверил еще раз, тот же результат Сообщение отредактировал maint - 17.4.2012, 12:30 |
|
|
AD |
![]()
Сообщение
#11
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(maint @ 17.4.2012, 13:27) Link в первый аргумент вызова open(argv[1]). Сама программа argv[0]. Ага параметры ошибся. Но не принципиально. SEEK_SET все равно нулю равен. Проверил еще раз, тот же результат Да-да. У меня тоже Ваш код работает. Понятно, что надо разбираться в коде, где-то накосячил! Спасибо. |
|
|
Iron Bug |
![]()
Сообщение
#12
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
посмотри fsync и fdatasync.
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 26.8.2025, 4:34 |